<html>
<head>
  <title>14-MySQL基于规则的优化</title>
  <basefont face="微软雅黑" size="2" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="exporter-version" content="YXBJ Windows/600646 (zh-CN, DDL); Windows/6.1.1 (Win64);"/>
  <meta name="content-class" content="yinxiang.markdown"/>
  <style>
    body, td {
      font-family: 微软雅黑;
      font-size: 10pt;
    }
  </style>
</head>
<body>
<a name="780"/>
<h1>14-MySQL基于规则的优化</h1>

<div><span><div style="font-size: 14px; margin: 0; padding: 0; width: 100%;"><h2 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 34px; border-bottom: 1px solid #dbdbdb; color: #333;">1 条件简化</h2>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">移除不必要的括号</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">常量传递</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">等值传递</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">移除没用的条件</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">表达式计算</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">如果查询语句中没有出现诸如SUM、MAX等聚集函数以及GROUP BY子句，优化器就把HAVING子句和WHERE子句合并</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">常量表检测：<br/>
a. 查询的表中一条记录都没有，或者只有一条记录<br/>
b. 使用主键或者唯一二级索引列等值匹配作为搜索条件来查询某个表<br/>
MySQL把通过这两种方式查询的表称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">常量表（constant tables）</strong>，优化器在分析一个查询语句时，首先执行常量表查询，然后把查询中涉及到该表的条件全部替换成常数，再分析其余表的查询成本。</li>
</ul>
<h2 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 34px; border-bottom: 1px solid #dbdbdb; color: #333;">2 外连接消除</h2>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">在外连接查询中，指定的WHERE子句中包含被驱动表中的列不为NULL值的条件称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">空值拒绝（reject-null）</strong>。在被驱动表的where子句符合<br/>
空值拒绝的条件后，外连接和内连接可以相互转换。这种转换带来的好处就是查询优化器可以通过评估表的不同连接顺序的成本，选出成本最低的那种连接顺序来执行查询。如：<br/>
SELECT * FROM t1 LEFT JOIN t2 ON t1.m1 = t2.m2 WHERE t2.n2 IS NOT NULL；</p>
<h2 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 34px; border-bottom: 1px solid #dbdbdb; color: #333;">3 子查询优化</h2>
<h3 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 27px; color: #333;">3-1 子查询的分类</h3>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-1-1 按返回的结果集区分子查询</h4>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">按照子查询返回的不同结果集类型把子查询分为：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">标量子查询<br/>
那些只返回一个单一值的子查询称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">标量子查询</strong><br/>
如：<br/>
SELECT (SELECT m1 FROM t1 LIMIT 1)；<br/>
SELECT * FROM t1 WHERE m1 = (SELECT MIN(m2) FROM t2)；</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">行子查询<br/>
就是返回一条记录的子查询，不过这条记录需要包含多个列（只包含一个列就成了标量子查询了）。比如这样：<br/>
SELECT * FROM t1 WHERE (m1, n1) = (SELECT m2, n2 FROM t2 LIMIT 1)；<br/>
其中的(SELECT m2, n2 FROM t2 LIMIT 1)就是一个行子查询，整条语句的含义就是要从t1表中找一些记录，这些记录的m1和n2列分别等于子查询结果中的m2和n2列。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">列子查询<br/>
列子查询自然就是查询出一个列的数据喽，不过这个列的数据需要包含多条记录（只包含一条记录就成了标量子查询了）。比如这样：<br/>
SELECT * FROM t1 WHERE m1 IN (SELECT m2 FROM t2)；<br/>
其中的(SELECT m2 FROM t2)就是一个列子查询，表明查询出t2表的m2列的值作为外层查询IN语句的参数。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">表子查询<br/>
顾名思义，就是子查询的结果既包含很多条记录，又包含很多个列，比如这样：<br/>
SELECT * FROM t1 WHERE (m1, n1) IN (SELECT m2, n2 FROM t2)；<br/>
其中的(SELECT m2, n2 FROM t2)就是一个表子查询，这里需要和行子查询对比一下，行子查询中我们用了LIMIT 1来保证子查询的结果只有一条记录，表子查询中不需要这个限制。</p>
</li>
</ul>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-1-2 按与外层查询关系区分子查询</h4>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">不相关子查询<br/>
如果子查询可以单独运行出结果，而不依赖于外层查询的值，我们就可以把这个子查询称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不相关子查询</strong>。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">相关子查询<br/>
如果子查询的执行需要依赖于外层查询的值，我们就可以把这个子查询称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">相关子查询</strong>。比如：<br/>
SELECT * FROM t1 WHERE m1 IN (SELECT m2 FROM t2 WHERE n1 = n2)；</p>
</li>
</ul>
<h3 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 27px; color: #333;">3-2 子查询在布尔表达式中的使用</h3>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">使用 <strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">=、&gt;、&lt;、&gt;=、&lt;=、&lt;&gt;、!=、&lt;=&gt;</strong> 作为布尔表达式的操作符<br/>
把这些操作符称为comparison_operator，所以子查询组成的布尔表达式为：操作数 comparison_operator (子查询)<br/>
这里的操作数可以是某个列名，或者是一个常量，或者是一个更复杂的表达式，甚至可以是另一个子查询。但是需要注意的是，**这里的子查询只能是标量子查询或者行子查询，也就是子查询的结果只能返回一个单一的值或者只能是一条记录。**比如：<br/>
标量子查询：SELECT * FROM t1 WHERE m1 &lt; (SELECT MIN(m2) FROM t2)；<br/>
行子查询：SELECT * FROM t1 WHERE (m1, n1) = (SELECT m2, n2 FROM t2 LIMIT 1)；</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">[NOT] IN/ANY/SOME/ALL子查询<br/>
对于列子查询和表子查询来说，它们的结果集中包含很多条记录，这些记录相当于是一个集合，所以就不能单纯的和另外一个操作数使用comparison_operator来组成布尔表达式了，MySQL通过下面的语法来支持某个操作数和一个集合组成一个布尔表达式：<br/>
a. 操作数 [NOT] IN (子查询)；<br/>
b. 操作数 comparison_operator ANY/SOME(子查询)；<br/>
c. 操作数 comparison_operator ALL(子查询)；</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">EXISTS子查询<br/>
有的时候我们仅仅需要判断子查询的结果集中是否有记录，而不在乎它的记录具体是个啥，可以使用把EXISTS或者NOT EXISTS放在子查询语句前边，就像这样：[NOT] EXISTS (子查询)。</p>
</li>
</ul>
<h3 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 27px; color: #333;">3-3 子查询语法的注意事项</h3>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">子查询必须用小括号括起来，不括起来的子查询是非法的</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">在SELECT子句中的子查询必须是标量子查询<br/>
如果子查询结果集中有多个列或者多个行，都不允许放在SELECT子句中，也就是查询列表中，比如这样就是非法的：</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">对于[NOT] IN/ANY/SOME/ALL子查询来说，子查询中<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不允许有LIMIT语句</strong>（这是规定）。对于[NOT] IN/ANY/SOME/ALL子查询来说，<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">ORDER BY、DISTINCT、没有聚集函数以及HAVING子句的GROUP BY子句</strong>也是没有作用的。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">不允许在一条语句中增删改某个表的记录时同时还对该表进行子查询。</p>
</li>
</ul>
<h3 style="line-height: 160%; box-sizing: content-box; font-weight: 700; font-size: 27px; color: #333;">3-4 子查询在MySQL中的执行</h3>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><img src="14-MySQL基于规则的优化_files/Image.png" type="image/png" data-filename="Image.png"/></p>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-4-1 标量子查询、行子查询的执行方式</h4>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">我们经常在下边两个场景中使用到标量子查询或者行子查询</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">SELECT子句中，前面说过在查询列表中的子查询必须是标量子查询；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">子查询使用使用=、&gt;、&lt;、&gt;=、&lt;=、&lt;&gt;、!=、&lt;=&gt;等操作符和某个操作数组成一个布尔表达式，这样的子查询必须是标量子查询或者行子查询；</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">对于上述两种场景中，相关和不相关子查询执行方式是：</p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不相关标量子查询或者行子查询</strong></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">如：<img src="14-MySQL基于规则的优化_files/Image [1].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">对于包含不相关的标量子查询或者行子查询的查询语句来说，MySQL会分别独立的执行外层查询和子查询，就当做两个单表查询：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">先单独执行子查询；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">然后将子查询得到的结果当做外层查询的参数再执行外层查询。</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">相关标量子查询或者行子查询</strong></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">如：<img src="14-MySQL基于规则的优化_files/Image [2].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">执行方式：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">先从外层查询中获取一条记录，从中找出子查询涉及到的列值作为子查询的查询条件，然后执行子查询；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">然后根据子查询的查询结果来检测外层查询的WHERE子句的条件是否满足，如果满足，就把外层查询的那条记录加入到结果集，否则就丢弃；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">再执行第二次，获取第二条外层查询中的记录，依次类推。</li>
</ul>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-4-2 IN子查询优化（列子查询、表子查询）</h4>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">物化表的提出</strong></li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">对于不相关的IN子查询，比如：<br/>
<img src="14-MySQL基于规则的优化_files/Image [3].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">不直接将<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不相关子查询</strong>的结果集当做外层查询的参数，而是将该结果集写入到一个<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">临时表</strong>里，写入临时表的过程是这样的：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">该临时表的列就是子查询结果集中的列；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">写入临时表的记录会被去重；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">会为临时表建立索引；</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">当子查询的结果集<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不是特别大</strong>时，会建立基于内存的使用<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">Memory</strong>存储引擎的临时表，会为该表建立<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">哈希索引</strong>；<br/>
当子查询的结果集<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">非常大</strong>，超过了系统变量<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">tmp_table_size或者max_heap_table_size</strong>，临时表会使用基于<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">磁盘</strong>的存储引擎来保存结果集中的记录，索引类型也转变为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">B+树索引</strong>。</p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">物化表转连接</strong><br/>
假设子查询物化表的名称为materialized_table，该物化表存储的子查询结果集的列为m_val，那么上边的查询就相当于表s1和子查询物化表materialized_table进行内连接：<br/>
<img src="14-MySQL基于规则的优化_files/Image [4].png" type="image/png" data-filename="Image.png"/><br/>
那么此时，MySQL查询优化器会通过运算来选择上述成本更低的方案来执行查询。</p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">将子查询转换为semi-join（半连接）</strong></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">能不能不进行物化操作直接把子查询转换为连接呢？重新审视一下上边的查询语句：<br/>
<img src="14-MySQL基于规则的优化_files/Image [5].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">可以把这个查询理解成：对于s1表中的某条记录，如果我们能在s2表（准确的说是执行完WHERE s2.key3 = 'a'之后的结果集）中找到一条或多条记录，这些记录的common_field的值等于s1表记录的key1列的值，那么该条s1表的记录就会被加入到最终的结果集。这个过程其实和把s1和s2两个表连接起来的效果很像：<img src="14-MySQL基于规则的优化_files/Image [6].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">只不过我们不能保证对于s1表的某条记录来说，在s2表（准确的说是执行完WHERE s2.key3 = 'a'之后的结果集）中有多少条记录满足s1.key1 = s2.common_field这个条件，不过我们可以分三种情况讨论：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">情况一：对于s1表的某条记录来说，s2表中没有任何记录满足s1.key1 = s2.common_field这个条件，那么该记录自然也不会加入到最后的结果集；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">情况二：对于s1表的某条记录来说，s2表中有且只有记录满足s1.key1 = s2.common_field这个条件，那么该记录会被加入最终的结果集；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">情况三：对于s1表的某条记录来说，s2表中至少有2条记录满足s1.key1 = s2.common_field这个条件，那么该记录会被多次加入最终的结果集。</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">对于s1表的某条记录来说，由于我们只关心s2表中<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">是否存在记录满足</strong>s1.key1 = s2.common_field这个条件，而<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">不关心具体有多少条记录与之匹配</strong>，又因为有情况三的存在，我们上边所说的IN子查询和两表连接之间并不完全等价。但是将子查询转换为连接又真的可以充分发挥优化器的作用，所以设计MySQL的大叔在这里提出了一个新概念 --- <strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">半连接（英文名：semi-join）</strong>。将s1表和s2表进行半连接的意思就是：<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">对于s1表的某条记录来说，只关心在s2表中是否存在与之匹配的记录是否存在，而不关心具体有多少条记录与之匹配，最终的结果集中只保留s1表的记录。</strong> 为了让大家有更直观的感受，我们假设MySQL内部是这么改写上边的子查询的：<br/>
<img src="" style="line-height: 160%; margin: 4px 0 10px; box-sizing: border-box; vertical-align: top; max-width: 100%;"></img></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">MySQL半连接（semi-join）的实现</strong></p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">子查询中的表上拉</strong> （Table pullout）<br/>
当<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">子查询的查询列表处只有主键或者唯一索引列</strong>时，可以直接把子查询中的表<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">上拉</strong>到外层查询的<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">FROM</strong>子句中，并把子查询中的搜索条件合并到外层查询的搜索条件中。比如：<br/>
<img src="14-MySQL基于规则的优化_files/Image [7].png" type="image/png" data-filename="Image.png"/></p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">重复值消除</strong> （DuplicateWeedout execution strategy）<br/>
对于下面这个查询：<br/>
<img src="14-MySQL基于规则的优化_files/Image [8].png" type="image/png" data-filename="Image.png"/><br/>
转换为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">semi-join</strong>查询后，s1表中的某条记录可能在s2表中有多条匹配的记录，所以该条记录可能多次被添加到最后的结果集中，为了消除重复，我们可以建立一个<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">临时表</strong>，比方说这个临时表长这样：<br/>
<img src="14-MySQL基于规则的优化_files/Image [9].png" type="image/png" data-filename="Image.png"/><br/>
这样在执行连接查询的过程中，每当某条s1表中的记录要加入结果集时，就首先把这条记录的id值加入到这个临时表里，如果添加成功，说明之前这条s1表中的记录并没有加入最终的结果集，现在把该记录添加到最终的结果集；如果添加失败，说明这条之前这条s1表中的记录已经加入过最终的结果集，这里直接把它丢弃就好了，这种使用临时表消除semi-join结果集中的重复值的方式称之为DuplicateWeedout。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">松散索引扫描</strong> （LooseScan execution strategy ）<br/>
<img src="14-MySQL基于规则的优化_files/Image [10].png" type="image/png" data-filename="Image.png"/><br/>
在子查询中，对于s2表的访问可以使用到key1列的索引，而恰好子查询的查询列表处就是key1列，这样在将该查询转换为半连接查询后，如果将s2作为驱动表执行查询的话，那么执行过程就是这样：<img src="14-MySQL基于规则的优化_files/1.jpg" type="image/jpeg" data-filename="1.jpg"/><br/>
如图所示，在s2表的idx_key1索引中，值为'aa'的二级索引记录一共有3条，那么只需要取第一条的值到s1表中查找s1.key3 = 'aa'的记录，如果能在s1表中找到对应的记录，那么就把对应的记录加入到结果集。依此类推，其他值相同的二级索引记录，也只需要取第一条记录的值到s1表中找匹配的记录，这种虽然是扫描索引，但只取值相同的记录的第一条去做匹配操作的方式称之为<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">松散索引扫描</strong>。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">Semi-join Materialization execution strategy</strong><br/>
之前介绍的先把外层查询的IN子句中的不相关子查询进行物化，然后再进行外层查询的表和物化表的连接本质上也算是一种semi-join，只不过由于物化表中没有重复的记录，所以可以直接将子查询转为连接查询。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">首次匹配</strong>  （FirstMatch execution strategy）<br/>
FirstMatch是一种最原始的半连接执行方式，跟前面介绍的<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">相关的标量、行子查询的执行方式是一样</strong>的，就是说先取一条外层查询的中的记录，然后到子查询的表中寻找符合匹配条件的记录，如果能找到一条，则将该外层查询的记录放入最终的结果集并且停止查找更多匹配的记录，如果找不到则把该外层查询的记录丢弃掉；然后再开始取下一条外层查询中的记录，重复上边这个过程。</p>
</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">总结，只有符合下边这些条件的子查询才可以被转换为semi-join：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">该子查询必须是和IN语句组成的布尔表达式，并且在外层查询的WHERE或者ON子句中出现；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">外层查询也可以有其他的搜索条件，只不过和IN子查询的搜索条件必须用<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">AND连接</strong>；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">该子查询必须是一个单一的查询，不能是由若干查询由UNION连接起来的形式；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">该子查询不能包含GROUP BY或者HAVING语句或者聚集函数；</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">一些典型的不能将子查询转为semi-join的情况：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">外层查询的WHERE条件中有其他搜索条件与IN子查询组成的布尔表达式使用OR连接起来；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">使用NOT IN而不是IN的情况；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">在SELECT子句中的IN子查询的情况；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">子查询中包含GROUP BY、HAVING或者聚集函数的情况；</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">子查询中包含UNIOIN的情况；</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">对MySQL不能转为semi-join查询的子查询</strong></p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">对于不相关子查询来说，可以尝试把它们物化之后再参与查询<br/>
<img src="14-MySQL基于规则的优化_files/Image [11].png" type="image/png" data-filename="Image.png"/><br/>
先将子查询物化，然后再判断key1是否在物化表的结果集中可以加快查询执行的速度；<br/>
请注意这里将子查询物化之后不能转为和外层查询的表的连接，只能是先扫描s1表，然后对s1表的某条记录来说，判断该记录的key1值在不在物化表中。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">不管子查询是相关的还是不相关的，都可以把IN子查询尝试转化为EXISTS子查询；<br/>
其实对于任意一个IN子查询来说，都可以被转为EXISTS子查询，通用的例子如下：<br/>
<img src="14-MySQL基于规则的优化_files/Image [12].png" type="image/png" data-filename="Image.png"/><br/>
<strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">如果不转换的话可能用不到索引</strong>，比如说：<br/>
<img src="14-MySQL基于规则的优化_files/Image [13].png" type="image/png" data-filename="Image.png"/></p>
</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">需要注意的是，如果IN子查询不满足转换为semi-join的条件，又不能转换为物化表或者转换为物化表的成本太大，那么它就会被转换为EXISTS查询。</strong></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">在MySQL5.5以及之前的版本没有引进semi-join和物化的方式优化子查询时，优化器都会把IN子查询转换为EXISTS子查询</strong>，好多同学就惊呼我明明写的是一个不相关子查询，为啥要按照执行相关子查询的方式来执行呢？所以当时好多声音都是建议大家把子查询转为连接，不过随着MySQL的发展，最近的版本中引入了非常多的子查询优化策略，大家可以稍微放心的使用子查询了，内部的转换工作优化器会为大家自动实现。<br/>
<img src="14-MySQL基于规则的优化_files/Image [14].png" type="image/png" data-filename="Image.png"/></p>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-4-3 ANY/SOME/ALL子查询优化</h4>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">如果ANY/ALL子查询是不相关子查询的话，它们在很多场合都能转换成我们熟悉的方式去执行，比方说：<img src="14-MySQL基于规则的优化_files/Image [15].png" type="image/png" data-filename="Image.png"/></p>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-4-3 [NOT] EXISTS子查询的执行</h4>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">[NOT] EXISTS子查询是不相关子查询</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;"><img src="14-MySQL基于规则的优化_files/Image [16].png" type="image/png" data-filename="Image.png"/></p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">[NOT] EXISTS子查询是相关子查询<br/>
<img src="14-MySQL基于规则的优化_files/Image [17].png" type="image/png" data-filename="Image.png"/></li>
</ul>
<h4 style="line-height: 160%; box-sizing: content-box; font-size: 20px; color: #333;">3-4-4 对于派生表的优化</h4>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">我们前边说过把子查询放在外层查询的FROM子句后，那么这个子查询的结果相当于一个派生表，比如下边这个查询：<img src="14-MySQL基于规则的优化_files/Image [18].png" type="image/png" data-filename="Image.png"/></p>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">子查询( SELECT id AS d_id, key3 AS d_key3 FROM s2 WHERE key1 = 'a')的结果就相当于一个派生表，这个表的名称是derived_s1，该表有两个列，分别是d_id和d_key3。<br/>
对于含有派生表的查询，MySQL提供了两种执行策略：</p>
<ul style="line-height: 160%; box-sizing: content-box; display: block; list-style-type: disc; padding-left: 30px; margin: 6px 0 10px; color: #333;">
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;"><strong style="line-height: 160%; box-sizing: content-box; font-weight: 700;">最容易想到的就是把派生表物化</strong><br/>
可以将派生表的结果集写到一个内部的临时表中，然后就把这个物化表当作普通表一样参与查询。当然，在对派生表进行物化时，设计MySQL的大叔使用了一种称为延迟物化的策略，也就是在查询中真正使用到派生表时才回去尝试物化派生表，而不是还没开始执行查询呢就把派生表物化掉。比方说对于下边这个含有派生表的查询来说：<br/>
<img src="14-MySQL基于规则的优化_files/Image [19].png" type="image/png" data-filename="Image.png"/><br/>
如果采用物化派生表的方式来执行这个查询的话，那么执行时首先会到s2表中找出满足s2.key2 = 1的记录，如果压根儿找不到，说明参与连接的s2表记录就是空的，所以整个查询的结果集就是空的，所以也就没有必要去物化查询中的派生表了。</p>
</li>
<li style="line-height: 160%; box-sizing: content-box; position: relative;">
<p style="line-height: 160%; box-sizing: content-box; color: #333; margin: 0;">将派生表和外层的表合并，也就是将查询重写为没有派生表的形式<br/>
<img src="14-MySQL基于规则的优化_files/Image [20].png" type="image/png" data-filename="Image.png"/><br/>
这样通过将外层查询和派生表合并的方式成功的消除了派生表，也就意味着我们没必要再付出创建和访问临时表的成本了。可是并不是所有带有派生表的查询都能被成功的和外层查询合并，当派生表中有这些语句就不可以和外层查询合并：<br/>
<img src="14-MySQL基于规则的优化_files/Image [21].png" type="image/png" data-filename="Image.png"/></p>
</li>
</ul>
<p style="line-height: 160%; box-sizing: content-box; margin: 10px 0; color: #333;">所以MySQL在执行带有派生表的时候，优先尝试把派生表和外层查询合并掉，如果不行的话，再把派生表物化掉执行查询。</p>
</div><center style="display:none !important;visibility:collapse !important;height:0 !important;white-space:nowrap;width:100%;overflow:hidden">%23%23%201%20%E6%9D%A1%E4%BB%B6%E7%AE%80%E5%8C%96%0A%0A*%20%E7%A7%BB%E9%99%A4%E4%B8%8D%E5%BF%85%E8%A6%81%E7%9A%84%E6%8B%AC%E5%8F%B7%0A*%20%E5%B8%B8%E9%87%8F%E4%BC%A0%E9%80%92%0A*%20%E7%AD%89%E5%80%BC%E4%BC%A0%E9%80%92%0A*%20%E7%A7%BB%E9%99%A4%E6%B2%A1%E7%94%A8%E7%9A%84%E6%9D%A1%E4%BB%B6%0A*%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%A1%E7%AE%97%0A*%20%E5%A6%82%E6%9E%9C%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%E4%B8%AD%E6%B2%A1%E6%9C%89%E5%87%BA%E7%8E%B0%E8%AF%B8%E5%A6%82SUM%E3%80%81MAX%E7%AD%89%E8%81%9A%E9%9B%86%E5%87%BD%E6%95%B0%E4%BB%A5%E5%8F%8AGROUP%20BY%E5%AD%90%E5%8F%A5%EF%BC%8C%E4%BC%98%E5%8C%96%E5%99%A8%E5%B0%B1%E6%8A%8AHAVING%E5%AD%90%E5%8F%A5%E5%92%8CWHERE%E5%AD%90%E5%8F%A5%E5%90%88%E5%B9%B6%0A*%20%E5%B8%B8%E9%87%8F%E8%A1%A8%E6%A3%80%E6%B5%8B%EF%BC%9A%0Aa.%20%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%A1%A8%E4%B8%AD%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E9%83%BD%E6%B2%A1%E6%9C%89%EF%BC%8C%E6%88%96%E8%80%85%E5%8F%AA%E6%9C%89%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%0Ab.%20%E4%BD%BF%E7%94%A8%E4%B8%BB%E9%94%AE%E6%88%96%E8%80%85%E5%94%AF%E4%B8%80%E4%BA%8C%E7%BA%A7%E7%B4%A2%E5%BC%95%E5%88%97%E7%AD%89%E5%80%BC%E5%8C%B9%E9%85%8D%E4%BD%9C%E4%B8%BA%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E6%9D%A5%E6%9F%A5%E8%AF%A2%E6%9F%90%E4%B8%AA%E8%A1%A8%0AMySQL%E6%8A%8A%E9%80%9A%E8%BF%87%E8%BF%99%E4%B8%A4%E7%A7%8D%E6%96%B9%E5%BC%8F%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%A1%A8%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E5%B8%B8%E9%87%8F%E8%A1%A8%EF%BC%88constant%20tables%EF%BC%89**%EF%BC%8C%E4%BC%98%E5%8C%96%E5%99%A8%E5%9C%A8%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%AA%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%E6%97%B6%EF%BC%8C%E9%A6%96%E5%85%88%E6%89%A7%E8%A1%8C%E5%B8%B8%E9%87%8F%E8%A1%A8%E6%9F%A5%E8%AF%A2%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8A%8A%E6%9F%A5%E8%AF%A2%E4%B8%AD%E6%B6%89%E5%8F%8A%E5%88%B0%E8%AF%A5%E8%A1%A8%E7%9A%84%E6%9D%A1%E4%BB%B6%E5%85%A8%E9%83%A8%E6%9B%BF%E6%8D%A2%E6%88%90%E5%B8%B8%E6%95%B0%EF%BC%8C%E5%86%8D%E5%88%86%E6%9E%90%E5%85%B6%E4%BD%99%E8%A1%A8%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%88%90%E6%9C%AC%E3%80%82%0A%0A%23%23%202%20%E5%A4%96%E8%BF%9E%E6%8E%A5%E6%B6%88%E9%99%A4%0A%0A%E5%9C%A8%E5%A4%96%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E4%B8%AD%EF%BC%8C%E6%8C%87%E5%AE%9A%E7%9A%84WHERE%E5%AD%90%E5%8F%A5%E4%B8%AD%E5%8C%85%E5%90%AB%E8%A2%AB%E9%A9%B1%E5%8A%A8%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%88%97%E4%B8%8D%E4%B8%BANULL%E5%80%BC%E7%9A%84%E6%9D%A1%E4%BB%B6%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E7%A9%BA%E5%80%BC%E6%8B%92%E7%BB%9D%EF%BC%88reject-null%EF%BC%89**%E3%80%82%E5%9C%A8%E8%A2%AB%E9%A9%B1%E5%8A%A8%E8%A1%A8%E7%9A%84where%E5%AD%90%E5%8F%A5%E7%AC%A6%E5%90%88%0A%E7%A9%BA%E5%80%BC%E6%8B%92%E7%BB%9D%E7%9A%84%E6%9D%A1%E4%BB%B6%E5%90%8E%EF%BC%8C%E5%A4%96%E8%BF%9E%E6%8E%A5%E5%92%8C%E5%86%85%E8%BF%9E%E6%8E%A5%E5%8F%AF%E4%BB%A5%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2%E3%80%82%E8%BF%99%E7%A7%8D%E8%BD%AC%E6%8D%A2%E5%B8%A6%E6%9D%A5%E7%9A%84%E5%A5%BD%E5%A4%84%E5%B0%B1%E6%98%AF%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E5%99%A8%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E8%AF%84%E4%BC%B0%E8%A1%A8%E7%9A%84%E4%B8%8D%E5%90%8C%E8%BF%9E%E6%8E%A5%E9%A1%BA%E5%BA%8F%E7%9A%84%E6%88%90%E6%9C%AC%EF%BC%8C%E9%80%89%E5%87%BA%E6%88%90%E6%9C%AC%E6%9C%80%E4%BD%8E%E7%9A%84%E9%82%A3%E7%A7%8D%E8%BF%9E%E6%8E%A5%E9%A1%BA%E5%BA%8F%E6%9D%A5%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2%E3%80%82%E5%A6%82%EF%BC%9A%0ASELECT%20*%20FROM%20t1%20LEFT%20JOIN%20t2%20ON%20t1.m1%20%3D%20t2.m2%20WHERE%20t2.n2%20IS%20NOT%20NULL%EF%BC%9B%0A%0A%23%23%203%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%0A%0A%23%23%23%203-1%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%88%86%E7%B1%BB%0A%0A%23%23%23%23%203-1-1%20%E6%8C%89%E8%BF%94%E5%9B%9E%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E5%8C%BA%E5%88%86%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E6%8C%89%E7%85%A7%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BF%94%E5%9B%9E%E7%9A%84%E4%B8%8D%E5%90%8C%E7%BB%93%E6%9E%9C%E9%9B%86%E7%B1%BB%E5%9E%8B%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%88%86%E4%B8%BA%EF%BC%9A%0A%0A*%20%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E9%82%A3%E4%BA%9B%E5%8F%AA%E8%BF%94%E5%9B%9E%E4%B8%80%E4%B8%AA%E5%8D%95%E4%B8%80%E5%80%BC%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2**%0A%E5%A6%82%EF%BC%9A%0ASELECT%20(SELECT%20m1%20FROM%20t1%20LIMIT%201)%EF%BC%9B%0ASELECT%20*%20FROM%20t1%20WHERE%20m1%20%3D%20(SELECT%20MIN(m2)%20FROM%20t2)%EF%BC%9B%0A%0A*%20%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%B0%B1%E6%98%AF%E8%BF%94%E5%9B%9E%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E4%B8%8D%E8%BF%87%E8%BF%99%E6%9D%A1%E8%AE%B0%E5%BD%95%E9%9C%80%E8%A6%81%E5%8C%85%E5%90%AB%E5%A4%9A%E4%B8%AA%E5%88%97%EF%BC%88%E5%8F%AA%E5%8C%85%E5%90%AB%E4%B8%80%E4%B8%AA%E5%88%97%E5%B0%B1%E6%88%90%E4%BA%86%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BA%86%EF%BC%89%E3%80%82%E6%AF%94%E5%A6%82%E8%BF%99%E6%A0%B7%EF%BC%9A%0ASELECT%20*%20FROM%20t1%20WHERE%20(m1%2C%20n1)%20%3D%20(SELECT%20m2%2C%20n2%20FROM%20t2%20LIMIT%201)%EF%BC%9B%0A%E5%85%B6%E4%B8%AD%E7%9A%84(SELECT%20m2%2C%20n2%20FROM%20t2%20LIMIT%201)%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E6%95%B4%E6%9D%A1%E8%AF%AD%E5%8F%A5%E7%9A%84%E5%90%AB%E4%B9%89%E5%B0%B1%E6%98%AF%E8%A6%81%E4%BB%8Et1%E8%A1%A8%E4%B8%AD%E6%89%BE%E4%B8%80%E4%BA%9B%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%BF%99%E4%BA%9B%E8%AE%B0%E5%BD%95%E7%9A%84m1%E5%92%8Cn2%E5%88%97%E5%88%86%E5%88%AB%E7%AD%89%E4%BA%8E%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E4%B8%AD%E7%9A%84m2%E5%92%8Cn2%E5%88%97%E3%80%82%0A%0A*%20%E5%88%97%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%88%97%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%87%AA%E7%84%B6%E5%B0%B1%E6%98%AF%E6%9F%A5%E8%AF%A2%E5%87%BA%E4%B8%80%E4%B8%AA%E5%88%97%E7%9A%84%E6%95%B0%E6%8D%AE%E5%96%BD%EF%BC%8C%E4%B8%8D%E8%BF%87%E8%BF%99%E4%B8%AA%E5%88%97%E7%9A%84%E6%95%B0%E6%8D%AE%E9%9C%80%E8%A6%81%E5%8C%85%E5%90%AB%E5%A4%9A%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%88%E5%8F%AA%E5%8C%85%E5%90%AB%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E5%B0%B1%E6%88%90%E4%BA%86%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BA%86%EF%BC%89%E3%80%82%E6%AF%94%E5%A6%82%E8%BF%99%E6%A0%B7%EF%BC%9A%0ASELECT%20*%20FROM%20t1%20WHERE%20m1%20IN%20(SELECT%20m2%20FROM%20t2)%EF%BC%9B%0A%E5%85%B6%E4%B8%AD%E7%9A%84(SELECT%20m2%20FROM%20t2)%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E5%88%97%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E8%A1%A8%E6%98%8E%E6%9F%A5%E8%AF%A2%E5%87%BAt2%E8%A1%A8%E7%9A%84m2%E5%88%97%E7%9A%84%E5%80%BC%E4%BD%9C%E4%B8%BA%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2IN%E8%AF%AD%E5%8F%A5%E7%9A%84%E5%8F%82%E6%95%B0%E3%80%82%0A%0A*%20%E8%A1%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E9%A1%BE%E5%90%8D%E6%80%9D%E4%B9%89%EF%BC%8C%E5%B0%B1%E6%98%AF%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E6%97%A2%E5%8C%85%E5%90%AB%E5%BE%88%E5%A4%9A%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%8F%88%E5%8C%85%E5%90%AB%E5%BE%88%E5%A4%9A%E4%B8%AA%E5%88%97%EF%BC%8C%E6%AF%94%E5%A6%82%E8%BF%99%E6%A0%B7%EF%BC%9A%0ASELECT%20*%20FROM%20t1%20WHERE%20(m1%2C%20n1)%20IN%20(SELECT%20m2%2C%20n2%20FROM%20t2)%EF%BC%9B%0A%E5%85%B6%E4%B8%AD%E7%9A%84(SELECT%20m2%2C%20n2%20FROM%20t2)%E5%B0%B1%E6%98%AF%E4%B8%80%E4%B8%AA%E8%A1%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E8%BF%99%E9%87%8C%E9%9C%80%E8%A6%81%E5%92%8C%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%AF%B9%E6%AF%94%E4%B8%80%E4%B8%8B%EF%BC%8C%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E6%88%91%E4%BB%AC%E7%94%A8%E4%BA%86LIMIT%201%E6%9D%A5%E4%BF%9D%E8%AF%81%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E5%8F%AA%E6%9C%89%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%A1%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E4%B8%8D%E9%9C%80%E8%A6%81%E8%BF%99%E4%B8%AA%E9%99%90%E5%88%B6%E3%80%82%0A%0A%0A%23%23%23%23%203-1-2%20%E6%8C%89%E4%B8%8E%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%85%B3%E7%B3%BB%E5%8C%BA%E5%88%86%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%0A*%20%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%A6%82%E6%9E%9C%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%8F%AF%E4%BB%A5%E5%8D%95%E7%8B%AC%E8%BF%90%E8%A1%8C%E5%87%BA%E7%BB%93%E6%9E%9C%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BE%9D%E8%B5%96%E4%BA%8E%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%80%BC%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%BF%99%E4%B8%AA%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2**%E3%80%82%0A%0A*%20%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%A6%82%E6%9E%9C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%89%A7%E8%A1%8C%E9%9C%80%E8%A6%81%E4%BE%9D%E8%B5%96%E4%BA%8E%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%80%BC%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%B1%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%BF%99%E4%B8%AA%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2**%E3%80%82%E6%AF%94%E5%A6%82%EF%BC%9A%0ASELECT%20*%20FROM%20t1%20WHERE%20m1%20IN%20(SELECT%20m2%20FROM%20t2%20WHERE%20n1%20%3D%20n2)%EF%BC%9B%0A%0A%23%23%23%203-2%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%9C%A8%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8%0A%0A*%20%E4%BD%BF%E7%94%A8%20**%3D%E3%80%81%3E%E3%80%81%3C%E3%80%81%3E%3D%E3%80%81%3C%3D%E3%80%81%3C%3E%E3%80%81!%3D%E3%80%81%3C%3D%3E**%20%E4%BD%9C%E4%B8%BA%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%0A%E6%8A%8A%E8%BF%99%E4%BA%9B%E6%93%8D%E4%BD%9C%E7%AC%A6%E7%A7%B0%E4%B8%BAcomparison_operator%EF%BC%8C%E6%89%80%E4%BB%A5%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%84%E6%88%90%E7%9A%84%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%BA%EF%BC%9A%E6%93%8D%E4%BD%9C%E6%95%B0%20comparison_operator%20(%E5%AD%90%E6%9F%A5%E8%AF%A2)%0A%E8%BF%99%E9%87%8C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B0%E5%8F%AF%E4%BB%A5%E6%98%AF%E6%9F%90%E4%B8%AA%E5%88%97%E5%90%8D%EF%BC%8C%E6%88%96%E8%80%85%E6%98%AF%E4%B8%80%E4%B8%AA%E5%B8%B8%E9%87%8F%EF%BC%8C%E6%88%96%E8%80%85%E6%98%AF%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%8D%E6%9D%82%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E7%94%9A%E8%87%B3%E5%8F%AF%E4%BB%A5%E6%98%AF%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%AD%90%E6%9F%A5%E8%AF%A2%E3%80%82%E4%BD%86%E6%98%AF%E9%9C%80%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C**%E8%BF%99%E9%87%8C%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%8F%AA%E8%83%BD%E6%98%AF%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E5%8F%AA%E8%83%BD%E8%BF%94%E5%9B%9E%E4%B8%80%E4%B8%AA%E5%8D%95%E4%B8%80%E7%9A%84%E5%80%BC%E6%88%96%E8%80%85%E5%8F%AA%E8%83%BD%E6%98%AF%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E3%80%82**%E6%AF%94%E5%A6%82%EF%BC%9A%0A%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9ASELECT%20*%20FROM%20t1%20WHERE%20m1%20%3C%20(SELECT%20MIN(m2)%20FROM%20t2)%EF%BC%9B%0A%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9ASELECT%20*%20FROM%20t1%20WHERE%20(m1%2C%20n1)%20%3D%20(SELECT%20m2%2C%20n2%20FROM%20t2%20LIMIT%201)%EF%BC%9B%0A%0A*%20%5BNOT%5D%20IN%2FANY%2FSOME%2FALL%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%AF%B9%E4%BA%8E%E5%88%97%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%92%8C%E8%A1%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%AE%83%E4%BB%AC%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E5%8C%85%E5%90%AB%E5%BE%88%E5%A4%9A%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%BF%99%E4%BA%9B%E8%AE%B0%E5%BD%95%E7%9B%B8%E5%BD%93%E4%BA%8E%E6%98%AF%E4%B8%80%E4%B8%AA%E9%9B%86%E5%90%88%EF%BC%8C%E6%89%80%E4%BB%A5%E5%B0%B1%E4%B8%8D%E8%83%BD%E5%8D%95%E7%BA%AF%E7%9A%84%E5%92%8C%E5%8F%A6%E5%A4%96%E4%B8%80%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%95%B0%E4%BD%BF%E7%94%A8comparison_operator%E6%9D%A5%E7%BB%84%E6%88%90%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%BA%86%EF%BC%8CMySQL%E9%80%9A%E8%BF%87%E4%B8%8B%E9%9D%A2%E7%9A%84%E8%AF%AD%E6%B3%95%E6%9D%A5%E6%94%AF%E6%8C%81%E6%9F%90%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%95%B0%E5%92%8C%E4%B8%80%E4%B8%AA%E9%9B%86%E5%90%88%E7%BB%84%E6%88%90%E4%B8%80%E4%B8%AA%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%9A%0Aa.%20%E6%93%8D%E4%BD%9C%E6%95%B0%20%5BNOT%5D%20IN%20(%E5%AD%90%E6%9F%A5%E8%AF%A2)%EF%BC%9B%0Ab.%20%E6%93%8D%E4%BD%9C%E6%95%B0%20comparison_operator%20ANY%2FSOME(%E5%AD%90%E6%9F%A5%E8%AF%A2)%EF%BC%9B%0Ac.%20%E6%93%8D%E4%BD%9C%E6%95%B0%20comparison_operator%20ALL(%E5%AD%90%E6%9F%A5%E8%AF%A2)%EF%BC%9B%0A%0A*%20EXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E6%9C%89%E7%9A%84%E6%97%B6%E5%80%99%E6%88%91%E4%BB%AC%E4%BB%85%E4%BB%85%E9%9C%80%E8%A6%81%E5%88%A4%E6%96%AD%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E6%98%AF%E5%90%A6%E6%9C%89%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%80%8C%E4%B8%8D%E5%9C%A8%E4%B9%8E%E5%AE%83%E7%9A%84%E8%AE%B0%E5%BD%95%E5%85%B7%E4%BD%93%E6%98%AF%E4%B8%AA%E5%95%A5%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%8A%8AEXISTS%E6%88%96%E8%80%85NOT%20EXISTS%E6%94%BE%E5%9C%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%E5%89%8D%E8%BE%B9%EF%BC%8C%E5%B0%B1%E5%83%8F%E8%BF%99%E6%A0%B7%EF%BC%9A%5BNOT%5D%20EXISTS%20(%E5%AD%90%E6%9F%A5%E8%AF%A2)%E3%80%82%0A%0A%23%23%23%203-3%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%AF%AD%E6%B3%95%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9%0A%0A*%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E7%94%A8%E5%B0%8F%E6%8B%AC%E5%8F%B7%E6%8B%AC%E8%B5%B7%E6%9D%A5%EF%BC%8C%E4%B8%8D%E6%8B%AC%E8%B5%B7%E6%9D%A5%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%98%AF%E9%9D%9E%E6%B3%95%E7%9A%84%0A%0A*%20%E5%9C%A8SELECT%E5%AD%90%E5%8F%A5%E4%B8%AD%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E6%98%AF%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%E5%A6%82%E6%9E%9C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E6%9C%89%E5%A4%9A%E4%B8%AA%E5%88%97%E6%88%96%E8%80%85%E5%A4%9A%E4%B8%AA%E8%A1%8C%EF%BC%8C%E9%83%BD%E4%B8%8D%E5%85%81%E8%AE%B8%E6%94%BE%E5%9C%A8SELECT%E5%AD%90%E5%8F%A5%E4%B8%AD%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E6%9F%A5%E8%AF%A2%E5%88%97%E8%A1%A8%E4%B8%AD%EF%BC%8C%E6%AF%94%E5%A6%82%E8%BF%99%E6%A0%B7%E5%B0%B1%E6%98%AF%E9%9D%9E%E6%B3%95%E7%9A%84%EF%BC%9A%0A%0A*%20%E5%AF%B9%E4%BA%8E%5BNOT%5D%20IN%2FANY%2FSOME%2FALL%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD**%E4%B8%8D%E5%85%81%E8%AE%B8%E6%9C%89LIMIT%E8%AF%AD%E5%8F%A5**%EF%BC%88%E8%BF%99%E6%98%AF%E8%A7%84%E5%AE%9A%EF%BC%89%E3%80%82%E5%AF%B9%E4%BA%8E%5BNOT%5D%20IN%2FANY%2FSOME%2FALL%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%8C**ORDER%20BY%E3%80%81DISTINCT%E3%80%81%E6%B2%A1%E6%9C%89%E8%81%9A%E9%9B%86%E5%87%BD%E6%95%B0%E4%BB%A5%E5%8F%8AHAVING%E5%AD%90%E5%8F%A5%E7%9A%84GROUP%20BY%E5%AD%90%E5%8F%A5**%E4%B9%9F%E6%98%AF%E6%B2%A1%E6%9C%89%E4%BD%9C%E7%94%A8%E7%9A%84%E3%80%82%0A%0A*%20%E4%B8%8D%E5%85%81%E8%AE%B8%E5%9C%A8%E4%B8%80%E6%9D%A1%E8%AF%AD%E5%8F%A5%E4%B8%AD%E5%A2%9E%E5%88%A0%E6%94%B9%E6%9F%90%E4%B8%AA%E8%A1%A8%E7%9A%84%E8%AE%B0%E5%BD%95%E6%97%B6%E5%90%8C%E6%97%B6%E8%BF%98%E5%AF%B9%E8%AF%A5%E8%A1%A8%E8%BF%9B%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E3%80%82%0A%0A%23%23%23%203-4%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%9C%A8MySQL%E4%B8%AD%E7%9A%84%E6%89%A7%E8%A1%8C%0A!%5Be3c8f9d5ac30a9ce08f979349035e3fa.png%5D(en-resource%3A%2F%2Fdatabase%2F814%3A1)%0A%0A%23%23%23%23%203-4-1%20%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E3%80%81%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%0A%0A%E6%88%91%E4%BB%AC%E7%BB%8F%E5%B8%B8%E5%9C%A8%E4%B8%8B%E8%BE%B9%E4%B8%A4%E4%B8%AA%E5%9C%BA%E6%99%AF%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%88%B0%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%0A*%20SELECT%E5%AD%90%E5%8F%A5%E4%B8%AD%EF%BC%8C%E5%89%8D%E9%9D%A2%E8%AF%B4%E8%BF%87%E5%9C%A8%E6%9F%A5%E8%AF%A2%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E6%98%AF%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9B%0A*%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BD%BF%E7%94%A8%E4%BD%BF%E7%94%A8%3D%E3%80%81%3E%E3%80%81%3C%E3%80%81%3E%3D%E3%80%81%3C%3D%E3%80%81%3C%3E%E3%80%81!%3D%E3%80%81%3C%3D%3E%E7%AD%89%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%92%8C%E6%9F%90%E4%B8%AA%E6%93%8D%E4%BD%9C%E6%95%B0%E7%BB%84%E6%88%90%E4%B8%80%E4%B8%AA%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E8%BF%99%E6%A0%B7%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E6%98%AF%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9B%0A%0A%E5%AF%B9%E4%BA%8E%E4%B8%8A%E8%BF%B0%E4%B8%A4%E7%A7%8D%E5%9C%BA%E6%99%AF%E4%B8%AD%EF%BC%8C%E7%9B%B8%E5%85%B3%E5%92%8C%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E6%98%AF%EF%BC%9A%0A%0A**%E4%B8%8D%E7%9B%B8%E5%85%B3%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2**%0A%0A%E5%A6%82%EF%BC%9A!%5Bb32b5656d9f674963fb0578d96ce80cc.png%5D(en-resource%3A%2F%2Fdatabase%2F816%3A1)%0A%0A%0A%E5%AF%B9%E4%BA%8E%E5%8C%85%E5%90%AB%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%E6%9D%A5%E8%AF%B4%EF%BC%8CMySQL%E4%BC%9A%E5%88%86%E5%88%AB%E7%8B%AC%E7%AB%8B%E7%9A%84%E6%89%A7%E8%A1%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%92%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E5%B0%B1%E5%BD%93%E5%81%9A%E4%B8%A4%E4%B8%AA%E5%8D%95%E8%A1%A8%E6%9F%A5%E8%AF%A2%EF%BC%9A%0A%0A*%20%E5%85%88%E5%8D%95%E7%8B%AC%E6%89%A7%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9B%0A*%20%E7%84%B6%E5%90%8E%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BE%97%E5%88%B0%E7%9A%84%E7%BB%93%E6%9E%9C%E5%BD%93%E5%81%9A%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%8F%82%E6%95%B0%E5%86%8D%E6%89%A7%E8%A1%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E3%80%82%0A%0A**%E7%9B%B8%E5%85%B3%E6%A0%87%E9%87%8F%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%88%96%E8%80%85%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2**%0A%0A%E5%A6%82%EF%BC%9A!%5B8256f0e468be87884eca61a48fbf7aed.png%5D(en-resource%3A%2F%2Fdatabase%2F815%3A1)%0A%0A%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%EF%BC%9A%0A%0A*%20%E5%85%88%E4%BB%8E%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E4%B8%AD%E8%8E%B7%E5%8F%96%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E4%BB%8E%E4%B8%AD%E6%89%BE%E5%87%BA%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%88%97%E5%80%BC%E4%BD%9C%E4%B8%BA%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%9D%A1%E4%BB%B6%EF%BC%8C%E7%84%B6%E5%90%8E%E6%89%A7%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9B%0A*%20%E7%84%B6%E5%90%8E%E6%A0%B9%E6%8D%AE%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E6%9D%A5%E6%A3%80%E6%B5%8B%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84WHERE%E5%AD%90%E5%8F%A5%E7%9A%84%E6%9D%A1%E4%BB%B6%E6%98%AF%E5%90%A6%E6%BB%A1%E8%B6%B3%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%BB%A1%E8%B6%B3%EF%BC%8C%E5%B0%B1%E6%8A%8A%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E9%82%A3%E6%9D%A1%E8%AE%B0%E5%BD%95%E5%8A%A0%E5%85%A5%E5%88%B0%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%8C%E5%90%A6%E5%88%99%E5%B0%B1%E4%B8%A2%E5%BC%83%EF%BC%9B%0A*%20%E5%86%8D%E6%89%A7%E8%A1%8C%E7%AC%AC%E4%BA%8C%E6%AC%A1%EF%BC%8C%E8%8E%B7%E5%8F%96%E7%AC%AC%E4%BA%8C%E6%9D%A1%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E4%BE%9D%E6%AC%A1%E7%B1%BB%E6%8E%A8%E3%80%82%0A%0A%23%23%23%23%203-4-2%20IN%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%EF%BC%88%E5%88%97%E5%AD%90%E6%9F%A5%E8%AF%A2%E3%80%81%E8%A1%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%89%0A%0A*%20**%E7%89%A9%E5%8C%96%E8%A1%A8%E7%9A%84%E6%8F%90%E5%87%BA**%0A%0A%E5%AF%B9%E4%BA%8E%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84IN%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%0A!%5B7e4ef96110a9dc426348bc251c9099c1.png%5D(en-resource%3A%2F%2Fdatabase%2F817%3A1)%0A%0A%E4%B8%8D%E7%9B%B4%E6%8E%A5%E5%B0%86**%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2**%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E5%BD%93%E5%81%9A%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%8F%82%E6%95%B0%EF%BC%8C%E8%80%8C%E6%98%AF%E5%B0%86%E8%AF%A5%E7%BB%93%E6%9E%9C%E9%9B%86%E5%86%99%E5%85%A5%E5%88%B0%E4%B8%80%E4%B8%AA**%E4%B8%B4%E6%97%B6%E8%A1%A8**%E9%87%8C%EF%BC%8C%E5%86%99%E5%85%A5%E4%B8%B4%E6%97%B6%E8%A1%A8%E7%9A%84%E8%BF%87%E7%A8%8B%E6%98%AF%E8%BF%99%E6%A0%B7%E7%9A%84%EF%BC%9A%0A%0A*%20%E8%AF%A5%E4%B8%B4%E6%97%B6%E8%A1%A8%E7%9A%84%E5%88%97%E5%B0%B1%E6%98%AF%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E7%9A%84%E5%88%97%EF%BC%9B%0A*%20%E5%86%99%E5%85%A5%E4%B8%B4%E6%97%B6%E8%A1%A8%E7%9A%84%E8%AE%B0%E5%BD%95%E4%BC%9A%E8%A2%AB%E5%8E%BB%E9%87%8D%EF%BC%9B%0A*%20%E4%BC%9A%E4%B8%BA%E4%B8%B4%E6%97%B6%E8%A1%A8%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95%EF%BC%9B%0A%0A%E5%BD%93%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86**%E4%B8%8D%E6%98%AF%E7%89%B9%E5%88%AB%E5%A4%A7**%E6%97%B6%EF%BC%8C%E4%BC%9A%E5%BB%BA%E7%AB%8B%E5%9F%BA%E4%BA%8E%E5%86%85%E5%AD%98%E7%9A%84%E4%BD%BF%E7%94%A8**Memory**%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E%E7%9A%84%E4%B8%B4%E6%97%B6%E8%A1%A8%EF%BC%8C%E4%BC%9A%E4%B8%BA%E8%AF%A5%E8%A1%A8%E5%BB%BA%E7%AB%8B**%E5%93%88%E5%B8%8C%E7%B4%A2%E5%BC%95**%EF%BC%9B%0A%E5%BD%93%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86**%E9%9D%9E%E5%B8%B8%E5%A4%A7**%EF%BC%8C%E8%B6%85%E8%BF%87%E4%BA%86%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F**tmp_table_size%E6%88%96%E8%80%85max_heap_table_size**%EF%BC%8C%E4%B8%B4%E6%97%B6%E8%A1%A8%E4%BC%9A%E4%BD%BF%E7%94%A8%E5%9F%BA%E4%BA%8E**%E7%A3%81%E7%9B%98**%E7%9A%84%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E%E6%9D%A5%E4%BF%9D%E5%AD%98%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E7%B4%A2%E5%BC%95%E7%B1%BB%E5%9E%8B%E4%B9%9F%E8%BD%AC%E5%8F%98%E4%B8%BA**B%2B%E6%A0%91%E7%B4%A2%E5%BC%95**%E3%80%82%0A%0A**%E7%89%A9%E5%8C%96%E8%A1%A8%E8%BD%AC%E8%BF%9E%E6%8E%A5**%0A%E5%81%87%E8%AE%BE%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%89%A9%E5%8C%96%E8%A1%A8%E7%9A%84%E5%90%8D%E7%A7%B0%E4%B8%BAmaterialized_table%EF%BC%8C%E8%AF%A5%E7%89%A9%E5%8C%96%E8%A1%A8%E5%AD%98%E5%82%A8%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E9%9B%86%E7%9A%84%E5%88%97%E4%B8%BAm_val%EF%BC%8C%E9%82%A3%E4%B9%88%E4%B8%8A%E8%BE%B9%E7%9A%84%E6%9F%A5%E8%AF%A2%E5%B0%B1%E7%9B%B8%E5%BD%93%E4%BA%8E%E8%A1%A8s1%E5%92%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%89%A9%E5%8C%96%E8%A1%A8materialized_table%E8%BF%9B%E8%A1%8C%E5%86%85%E8%BF%9E%E6%8E%A5%EF%BC%9A%0A!%5Bbeb0f427c5487458a74086d80c5925b1.png%5D(en-resource%3A%2F%2Fdatabase%2F818%3A1)%0A%E9%82%A3%E4%B9%88%E6%AD%A4%E6%97%B6%EF%BC%8CMySQL%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E5%99%A8%E4%BC%9A%E9%80%9A%E8%BF%87%E8%BF%90%E7%AE%97%E6%9D%A5%E9%80%89%E6%8B%A9%E4%B8%8A%E8%BF%B0%E6%88%90%E6%9C%AC%E6%9B%B4%E4%BD%8E%E7%9A%84%E6%96%B9%E6%A1%88%E6%9D%A5%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2%E3%80%82%0A%0A**%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E6%8D%A2%E4%B8%BAsemi-join%EF%BC%88%E5%8D%8A%E8%BF%9E%E6%8E%A5%EF%BC%89**%0A%0A%E8%83%BD%E4%B8%8D%E8%83%BD%E4%B8%8D%E8%BF%9B%E8%A1%8C%E7%89%A9%E5%8C%96%E6%93%8D%E4%BD%9C%E7%9B%B4%E6%8E%A5%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E6%8D%A2%E4%B8%BA%E8%BF%9E%E6%8E%A5%E5%91%A2%EF%BC%9F%E9%87%8D%E6%96%B0%E5%AE%A1%E8%A7%86%E4%B8%80%E4%B8%8B%E4%B8%8A%E8%BE%B9%E7%9A%84%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%EF%BC%9A%0A!%5B32f083d22c0d4fa0cd45bd41d558b42b.png%5D(en-resource%3A%2F%2Fdatabase%2F819%3A1)%0A%0A%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%BF%99%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%90%86%E8%A7%A3%E6%88%90%EF%BC%9A%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E8%83%BD%E5%9C%A8s2%E8%A1%A8%EF%BC%88%E5%87%86%E7%A1%AE%E7%9A%84%E8%AF%B4%E6%98%AF%E6%89%A7%E8%A1%8C%E5%AE%8CWHERE%20s2.key3%20%3D%20'a'%E4%B9%8B%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%89%E4%B8%AD%E6%89%BE%E5%88%B0%E4%B8%80%E6%9D%A1%E6%88%96%E5%A4%9A%E6%9D%A1%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%BF%99%E4%BA%9B%E8%AE%B0%E5%BD%95%E7%9A%84common_field%E7%9A%84%E5%80%BC%E7%AD%89%E4%BA%8Es1%E8%A1%A8%E8%AE%B0%E5%BD%95%E7%9A%84key1%E5%88%97%E7%9A%84%E5%80%BC%EF%BC%8C%E9%82%A3%E4%B9%88%E8%AF%A5%E6%9D%A1s1%E8%A1%A8%E7%9A%84%E8%AE%B0%E5%BD%95%E5%B0%B1%E4%BC%9A%E8%A2%AB%E5%8A%A0%E5%85%A5%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E3%80%82%E8%BF%99%E4%B8%AA%E8%BF%87%E7%A8%8B%E5%85%B6%E5%AE%9E%E5%92%8C%E6%8A%8As1%E5%92%8Cs2%E4%B8%A4%E4%B8%AA%E8%A1%A8%E8%BF%9E%E6%8E%A5%E8%B5%B7%E6%9D%A5%E7%9A%84%E6%95%88%E6%9E%9C%E5%BE%88%E5%83%8F%EF%BC%9A!%5B69127ad251d3b3559d276f610c91e6de.png%5D(en-resource%3A%2F%2Fdatabase%2F820%3A1)%0A%0A%E5%8F%AA%E4%B8%8D%E8%BF%87%E6%88%91%E4%BB%AC%E4%B8%8D%E8%83%BD%E4%BF%9D%E8%AF%81%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%9C%A8s2%E8%A1%A8%EF%BC%88%E5%87%86%E7%A1%AE%E7%9A%84%E8%AF%B4%E6%98%AF%E6%89%A7%E8%A1%8C%E5%AE%8CWHERE%20s2.key3%20%3D%20'a'%E4%B9%8B%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%89%E4%B8%AD%E6%9C%89%E5%A4%9A%E5%B0%91%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%BB%A1%E8%B6%B3s1.key1%20%3D%20s2.common_field%E8%BF%99%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E4%B8%8D%E8%BF%87%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%88%86%E4%B8%89%E7%A7%8D%E6%83%85%E5%86%B5%E8%AE%A8%E8%AE%BA%EF%BC%9A%0A%0A*%20%E6%83%85%E5%86%B5%E4%B8%80%EF%BC%9A%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8Cs2%E8%A1%A8%E4%B8%AD%E6%B2%A1%E6%9C%89%E4%BB%BB%E4%BD%95%E8%AE%B0%E5%BD%95%E6%BB%A1%E8%B6%B3s1.key1%20%3D%20s2.common_field%E8%BF%99%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E9%82%A3%E4%B9%88%E8%AF%A5%E8%AE%B0%E5%BD%95%E8%87%AA%E7%84%B6%E4%B9%9F%E4%B8%8D%E4%BC%9A%E5%8A%A0%E5%85%A5%E5%88%B0%E6%9C%80%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%9B%0A*%20%E6%83%85%E5%86%B5%E4%BA%8C%EF%BC%9A%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8Cs2%E8%A1%A8%E4%B8%AD%E6%9C%89%E4%B8%94%E5%8F%AA%E6%9C%89%E8%AE%B0%E5%BD%95%E6%BB%A1%E8%B6%B3s1.key1%20%3D%20s2.common_field%E8%BF%99%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E9%82%A3%E4%B9%88%E8%AF%A5%E8%AE%B0%E5%BD%95%E4%BC%9A%E8%A2%AB%E5%8A%A0%E5%85%A5%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%9B%0A*%20%E6%83%85%E5%86%B5%E4%B8%89%EF%BC%9A%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8Cs2%E8%A1%A8%E4%B8%AD%E8%87%B3%E5%B0%91%E6%9C%892%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%BB%A1%E8%B6%B3s1.key1%20%3D%20s2.common_field%E8%BF%99%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E9%82%A3%E4%B9%88%E8%AF%A5%E8%AE%B0%E5%BD%95%E4%BC%9A%E8%A2%AB%E5%A4%9A%E6%AC%A1%E5%8A%A0%E5%85%A5%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E3%80%82%0A%0A%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8C%E7%94%B1%E4%BA%8E%E6%88%91%E4%BB%AC%E5%8F%AA%E5%85%B3%E5%BF%83s2%E8%A1%A8%E4%B8%AD**%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E8%AE%B0%E5%BD%95%E6%BB%A1%E8%B6%B3**s1.key1%20%3D%20s2.common_field%E8%BF%99%E4%B8%AA%E6%9D%A1%E4%BB%B6%EF%BC%8C%E8%80%8C**%E4%B8%8D%E5%85%B3%E5%BF%83%E5%85%B7%E4%BD%93%E6%9C%89%E5%A4%9A%E5%B0%91%E6%9D%A1%E8%AE%B0%E5%BD%95%E4%B8%8E%E4%B9%8B%E5%8C%B9%E9%85%8D**%EF%BC%8C%E5%8F%88%E5%9B%A0%E4%B8%BA%E6%9C%89%E6%83%85%E5%86%B5%E4%B8%89%E7%9A%84%E5%AD%98%E5%9C%A8%EF%BC%8C%E6%88%91%E4%BB%AC%E4%B8%8A%E8%BE%B9%E6%89%80%E8%AF%B4%E7%9A%84IN%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%92%8C%E4%B8%A4%E8%A1%A8%E8%BF%9E%E6%8E%A5%E4%B9%8B%E9%97%B4%E5%B9%B6%E4%B8%8D%E5%AE%8C%E5%85%A8%E7%AD%89%E4%BB%B7%E3%80%82%E4%BD%86%E6%98%AF%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E6%8D%A2%E4%B8%BA%E8%BF%9E%E6%8E%A5%E5%8F%88%E7%9C%9F%E7%9A%84%E5%8F%AF%E4%BB%A5%E5%85%85%E5%88%86%E5%8F%91%E6%8C%A5%E4%BC%98%E5%8C%96%E5%99%A8%E7%9A%84%E4%BD%9C%E7%94%A8%EF%BC%8C%E6%89%80%E4%BB%A5%E8%AE%BE%E8%AE%A1MySQL%E7%9A%84%E5%A4%A7%E5%8F%94%E5%9C%A8%E8%BF%99%E9%87%8C%E6%8F%90%E5%87%BA%E4%BA%86%E4%B8%80%E4%B8%AA%E6%96%B0%E6%A6%82%E5%BF%B5%20---%C2%A0**%E5%8D%8A%E8%BF%9E%E6%8E%A5%EF%BC%88%E8%8B%B1%E6%96%87%E5%90%8D%EF%BC%9Asemi-join%EF%BC%89**%E3%80%82%E5%B0%86s1%E8%A1%A8%E5%92%8Cs2%E8%A1%A8%E8%BF%9B%E8%A1%8C%E5%8D%8A%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%84%8F%E6%80%9D%E5%B0%B1%E6%98%AF%EF%BC%9A**%E5%AF%B9%E4%BA%8Es1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%8F%AA%E5%85%B3%E5%BF%83%E5%9C%A8s2%E8%A1%A8%E4%B8%AD%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E4%B8%8E%E4%B9%8B%E5%8C%B9%E9%85%8D%E7%9A%84%E8%AE%B0%E5%BD%95%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%EF%BC%8C%E8%80%8C%E4%B8%8D%E5%85%B3%E5%BF%83%E5%85%B7%E4%BD%93%E6%9C%89%E5%A4%9A%E5%B0%91%E6%9D%A1%E8%AE%B0%E5%BD%95%E4%B8%8E%E4%B9%8B%E5%8C%B9%E9%85%8D%EF%BC%8C%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E5%8F%AA%E4%BF%9D%E7%95%99s1%E8%A1%A8%E7%9A%84%E8%AE%B0%E5%BD%95%E3%80%82**%20%E4%B8%BA%E4%BA%86%E8%AE%A9%E5%A4%A7%E5%AE%B6%E6%9C%89%E6%9B%B4%E7%9B%B4%E8%A7%82%E7%9A%84%E6%84%9F%E5%8F%97%EF%BC%8C%E6%88%91%E4%BB%AC%E5%81%87%E8%AE%BEMySQL%E5%86%85%E9%83%A8%E6%98%AF%E8%BF%99%E4%B9%88%E6%94%B9%E5%86%99%E4%B8%8A%E8%BE%B9%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%EF%BC%9A%0A!%5Bimage.png%5D(data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAvAAAAD4CAYAAACKatI%2BAAAgAElEQVR4Ae29T4gkyZ7f%2Ba1H7xTotFBLOC0xXTULdZCUEQsrCT8kzGGr8qBiIljeDHVqHbbIpAYkRUHNQYdIdFgyQKeCypG0KiK2WVDDG4rRIiJEXbLrspCHQOgSUYMOdXhZDdrGky3QaZgePV4uP%2FvjbmZu7uERGZkdmf3Npjo8zM1%2BZv4xc7Of%2FexnFncuLi4uwD8SIAESIAESIAESIAESIIEbQeAXN6KULCQJkAAJkAAJkAAJkAAJkIAiQAWeDYEESIAESIAESIAESIAEbhABKvA3qLJYVBIgARIgARIgARIgARKgAs82QAIkQAIkQAIkQAIkQAI3iAAV%2BBtUWSwqCZAACZAACZAACZAACVCBZxsgARIgARIgARIgARIggRtEgAr8DaosFpUESIAESIAESIAESIAEqMCzDZAACZAACZAACZAACZDADSJABf4GVRaLSgIkQAIkQAIkQAIkQAJU4NkGSIAESIAESIAESIAESOAGEaACf4Mqi0UlARIgARIgARIgARIgASrwbAMkQAIkQAIkQAIkQAIkcIMIUIG%2FQZXFopIACZAACZAACZAACZDAF9uA4Le%2F%2FS1%2B85vf4OLiYhuKwzKQAAmQAAmQAAmQAAn8TAncuXMHX3zxBX7xi%2B21c29Fyai8%2F0zfED42CZAACZAACZAACWwZATEoi266zX9bocDT8r7NTYRlIwESIAESIAESIIGfF4Ft1023QoH%2FeTUJPi0JkAAJkAAJkAAJkAAJrE%2BACvz67JiSBEiABEiABEiABEiABK6dABX4a0fODEmABEiABEiABEiABEhgfQJU4Ndnx5QkQAIkQAIkQAIkQAIkcO0EqMBfO3JmSAIkQAIkQAIkQAIkQALrE6ACvz47piQBEiABEiABEiABEiCBaydABf7akTNDEiABEiABEiABEiABElifABX49dkxJQmQAAmQAAmQAAmQAAlcOwEq8NeOnBmSAAmQAAmQAAmQAAmQwPoEqMCvz44pSYAESIAESIAESIAESODaCVCBv3bkzJAESIAESIAESIAESIAE1idABX59dkxJAiRAAiRAAiRAAiRAAtdOgAr8tSNnhiRAAiRAAiRAAiRAAiSwPgEq8OuzY0oSIAESIAESIAESIAESuHYCVOCvHTkzJAESIAESIAESIAESIIH1CVCBX58dU5IACZAACZAACZAACZDAtROgAn%2FtyJkhCZAACZAACZAACZAACaxPgAr8%2BuyYkgRIgARIgARIgARIgASunQAV%2BGtHzgxJgARIgARIgARIgARIYH0CVODXZ8eUJEACJEACJEACJEACJHDtBKjAXztyZkgCJEACJEACJEACJEAC6xO4BQr8Z7x7uYvdXfPv5Tt8VjyC8N1dvHyn7wBy7yXyrw6%2Fz%2B9eFrJEZi5PIgUy1b0PeG3zdj6LvBzhK1x%2BeK2fZ1U5H17Hnyuedbnsrz%2FomDZ%2FzdWX6THK%2BRg2VgC07FXLH5bTlqO5nFgdidQg3GkP%2Bnlewzw6VJ7muWz%2B5fYVltT5%2FuG114a8snv3ijzx%2BR1eOu1H8tMoTR3lXKHK53x1Mm546ZYhr7%2BGaRmNBEiABEiABEjgJyfwxU9egksW4MPrHr57PMHpq3sRSSkGk1d4ErsViW2D0sEEr0qJRAHsYXj%2FDU5f7dio6vPF6SleKAWxh4%2FPTvHCv%2B3FXf5F5yNy3mAX3yxPoGKIEtr77jHePH6Mr354jd0e8Ob0BZYX5WllvKdv9LMo2cN3SF89wb0Pr9Eb3seb01dKtii4vddf4fTFlwBSpPgen7GDex%2FeA0%2BfNix9LNp6HNZtD2kKfP8Z2Ln3Ae%2FxFLbkOy9OcfpClOhv8LBpW9p5gdPTF3m9DO3jiZL%2B%2FBMGk1PVJhXXl%2B8wEa73nuDV6ROosI%2FPcOo1ohTpp%2Ff4gJ0G9Wkzq%2Fr8jHffSNs4xY5ps8N3aaS9V6VnOAmQAAmQAAmQwE9N4BZY4K8J4ecZvps9xRtPsbpc3qKs5ZbdXWuNvYcnr1afBNx78gqnA%2BCb4RDP3z9SCuRy5b1Z%2Be%2Blj5HOPuIHAB%2Fev8XTN8XEYOfFGzx9K8rlD%2Fg4u4%2FHDz9i9lniAY8eAbOPkqr%2Bb5Mc6nOK3%2F3h4wz3Hz%2FER7%2Fg6nnjKdYL%2FTz7DhgM8gnlvScDDPCd4lUv8T6ePQO%2BiS0ZVSYMVhxyk720L1t%2F95A%2BTisl8AYJkAAJkAAJkMB2ErjxCvzO1wNg2MPuru%2FmoXHPMOwV7jWeK0NNfcyUvMAl54ePmD19tAELqM34A75VluxTnJ7KP6tU2furfSoleAg8Gwzw5tF77OYTgmVy3uJ57roRYwiI4qmf%2FTO%2B%2F5TioRjb878v8TD9pKzXSB8iTUURfof3eISdLx9iuXq4WQ7rtYcUD9MUDz%2FO8E4mHjvyTPkDbuxCTRS%2BcpeD7uGr%2BzM0mOMAO49w%2F7uZcQ9rUKQP3%2BrVItW2ZBUhNp37jNl3M9z3ytRANqOQAAmQAAmQAAn8pARuvAsNjOuB8iHu7WKYDrRLgsK6OReaz99%2F2nBFiZIoyrO4VKzu5hMWRlngn4h%2F9Et8n77C6WkYo%2Bp7tQvN2%2Be7eCvJFFNRAO0egipZAO6lePiddiUCvq%2BJaG9tlsP67eEe0offoSfuK2hWcvsE1%2FO5g68ff4NvPzzBoyYZyuTp7XPsfnLfBz%2BhuBspl7CYbu9H5TcSIAESIAESIIEtInDjLfA5S6XITzDAEN%2Fa3Yj5zctf3PvqPvBJ%2FLs39addZU7F72Uo1v649XvV3HZeXH4yYPMUH%2FjT0zd4OhtiqNw3YhZj7TpTGHEDF6ClzK6Gg1bkV2sPahKUW6rNqoKFsYHPLx%2Bm%2BCSO9vlfbEUjv1m6EFemT%2B8bNm71Ppwqt6qhrLAEm1Vl78JzUe7z5y1lxwASIAESIAESIIEtJXB7FHgFWJTJKyK988hRZDeZh1Zg3zxt6EohdnDlO78ZhX%2F5k%2Bzg60GK2fBbdUrLzqOnePuNPelHLP7P8VZciz5%2Fj8utUazOYXnZm7QHUaKXS1olxud37%2FITbcRtxv6JAg7DUcI%2BvxtiiMdIXa8aGzn2ee8JnuE93sfuVYUpRV4mYXoPg0ST9qOUd9k8W5WO4SRAAiRAAiRAAltL4Ia70JiTYQodCeoEmdwlQPvA21NA%2FNNl%2FHt4%2Bib3E1Y%2B8EUi45Kzgxenb%2FB6t4fd0r016ldOJOkNkRdd3FRMuZV1VPmuiFzJbz1XoDVKFU2iNlt%2B18P7Dy%2Bws%2FMCb%2B7vomchWG6fm7jLRMRvlMM67SFSJifIq4uSi5YT0bm89%2BQrfLu7i%2BcSJnzsiUb3nmAweIne7q6O7bp7eRxm2H0rScubmXceAc%2BfA0%2BX%2BNGIkt4b5q1LvReqeX1%2Bh6EKnxV1iGo3KuexeEkCJEACJEACJLAlBO5cXFxc%2FNRl%2BfHHH3%2FqIjB%2FEiABEiABEiABEiABEsgJ3L17N7%2Fetotb5kKzbXhZHhIgARIgARIgARIgARLYLAEq8JvlSWkkQAIkQAIkQAIkQAIkcKUEqMBfKV4KJwESIAESIAESIAESIIHNEqACv1melEYCJEACJEACJEACJEACV0qACvyV4qVwEiABEiABEiABEiABEtgsASrwm%2BVJaSRAAiRAAiRAAiRAAiRwpQSowF8pXgonARIgARIgARIgARIggc0SoAK%2FWZ6URgIkQAIkQAIkQAIkQAJXSoAK%2FJXipXASIAESIAESIAESIAES2CwBKvCb5UlpJEACJEACJEACJEACJHClBKjAXyleCicBEiABEiABEiABEiCBzRKgAr9ZnpRGAldE4ANe7%2B7i9YcrEk%2BxJEACJEACJEACN4YAFfhVqurDa%2Bzu7pp%2Fr6F1qc9493IXuy%2Ff4bOR9fndS7x8Z7%2BtkkER98NrnU9TOZvIs8hdX61ahjD95b9rpVUzf4lLIr18ca5Dwud3eFlqY2tk7LTV2jYk8TgrWAMwk5AACZAACZDAT0eACnxT9qJYPf%2BEweQUp6enmAw%2B4XmutKdI8R1ml9PZTUn0hOD9o1O8edq0cJuOtw1lAD6%2F%2BwZ4Y3kDw2ExSdr0E2%2BLvA%2FfDnHfPPPp6Qvs5AXbwYvTU7woAvI70YudF6adptHbDCQBEiABEiABEri5BKjAN6y7z7PvgMEAT%2B7pBPeeDDBwlPbHzx7ju29X828Qq3nZon8PT16toKjFym%2Bsr7lhtcKqKxZ2zzor6dSkZANliJWrIizOAbj35FWusN5LH6OxKupYn3d37UoJgIpw4fD6tV5defnunXJVURyE28vXeC0rLLuv8c7Ul%2BXqlTufzMnE4yVev3Ms6TZBxfMXwZ%2Fx%2FacUD78sQuTKzackyn0mpwy%2BhOCb2x6evw1u8isJkAAJkAAJkMC2E%2Fhi2wu4LeX74eMM9x8Z7V0V6h6%2Buj%2FD%2Bx%2BAh%2FL9yxSPP32LD9hBoH9VPMIHfDu8jzenrxwra0XUVYKdlQI92fiA172PeHZ6ilcixyjpk1dPsPP1ABjO8PnJE8iTfXj%2FFk%2BfnarrVbK0cUURDvXBp2%2BWTUaacZAJ1Oz%2Bs%2BVlU88vhvtTn2sY7nCQ8r%2F99BCTN0%2FRe%2F4dHk%2Fe4GnvPX6Qmp29Bd5MMEAPw49vMBFk38tSy7foffcYk9NXqkyiZPdef4VTYyJ%2FO%2FyoyvAK4gb0Dd59%2FSqf%2FFle7qfHrreLIYB0MMGrJ%2FfUROb0iVTdLt67ieSZvnmIyamus7AMbtTiWtqDPOMpXqlKf41dT2gRk1ckQAIkQAIkQALbSYAK%2FMbq5R6ePIOyaA8ayfwSD9O3eL4rbjn1yl0jcQBmwx52kfryPrzHW%2Flv17G0pqaE91I8xhCzz0%2Fw5N4HvP80wNdNXTQihdp5cYrTF5EbtUENOHx4jZ6a7CwvnF0pKcX84SNmTx%2FpSYyUZ%2BcRns5ESdd%2FT5%2FJJOY18PSZUrRf2zKnmslMuAqcmb7x%2BftPSB9%2FnU8o1ArBd9%2Fjs5k2pIOvzZU8nxVW%2FanZievSEBg0aw9qUjObobcr6r75e%2FrMXsU%2FpT08fYZTdy4aj8lQEiABEiABEiCBLSVABb5hxXz5MMUnsbzuWM0n4u6w8wj3v5nhh8dNhGo3lScwm2BngeLdREQQJx0McH84xEfRSm0xJc7TN7ll2E8ik477eDn7jCdfvQeevfCS%2BXGXf%2FOsyCb6cgv8Eg5iKVd7Dza8UrH8cW5EDGulvxGFZSFJgARIgARIgAQ2QoA%2B8A0xioUVQ3GR0X%2Bf3w0xxGOkrqKMHXz9%2BCPef2woVEXTCuybpzOteDdIqn2iY6eypHhx%2BgZ47hw3KJbmt99Un%2BAik47vZnj3HnhUMls3KIwTRVmRT%2FWmU9noK%2F8ab7pEhEPuDhS3SMuEwfNxl3nLV%2Fcxc%2BopL96XD5G%2Bfe%2FU3zd4mz5s6O6US8kvVD7fzfKTh2Tz6ez%2BV5eaAOXCG16EbbJRMo%2FDB7wOfZ4aCWEkEiABEiABEiCBn5IALfBN6d97gsHgJXq7uzpFOoD4kd%2FLVTgdfC99iE%2FDt8AyPxpRTntD65EhDs%2BYGAXat2T3sDtcxTq%2FgxeTAV72dvFS%2BVDv4MWb%2B9g1ftVSSt9qu4NH95%2FjOd7g1GFxuTI4gpZdVnL4jHdDzWfmlH2pRX%2FnBSZuPeEp3shpLmH9qXDt%2B2%2FdaJYV1bu%2F8wJv7u8W7iuqPVxyBuRlUHzx6uLtLt7mblJBm1SLLXrSpPzhh8bfB9KGZCFG7j3Bs6e7eK5cqp7izZuneEsf%2BAI2r0iABEiABEjgBhC4c3FxcfFTl%2FPHH3%2F8qYvwM85%2FNb%2FrnzEoPjoJkAAJkAAJkMDPiMDdu3e39mlpgd%2Faqrnqgoni3pNDaLRl1nMFuuq8f47y5TSa53C2EhcQKvcoFFF4RQIkQAIkQAIkQAKWAC3wlgQ%2FSYAESIAESIAESIAESMAQ2GYLPDexspmSAAmQAAmQAAmQAAmQwA0iQAX%2BBlUWi0oCJEACJEACJEACJEACVODZBkiABEiABEiABEiABEjgBhGgAn%2BDKotFJQESIAESIAESIAESIAEq8GwDJEACJEACJEACJEACJHCDCFCBv0GVxaKSAAmQAAmQAAmQAAmQABV4tgESIAESIAESIAESIAESuEEEqMDfoMpiUUmABEiABEiABEiABEiACjzbAAmQAAmQAAmQAAmQAAncIAJU4G9QZbGoJEACJEACJEACJEACJEAFvmEb%2BPB6F68%2F%2BJF12Ge8e%2FkS7z4X9z6%2Fe4mXKkDu7WJ3t%2FinwwF8foeXTviuI1zSu2l2X76DI77IyLkq8nQCL3Hpl8F%2FvkuIrUz6l%2F%2F%2BT%2FBf%2Frd3%2BMvKGOUb66QpS2EICZAACZAACZAACdwsAl%2FcrOJuW2lTPPxyWZlSDCav8OReJF46wOTVE9zDB7zefY7Xj07xYkfHSwcTvIomisi5gqB7T17h9IkR%2FOE1dofvkKqyXkFmFEkCJEACJEACJEACJNCYAC3wDVF9%2BTDFp%2B%2BX2cEbCitF28Gjp9icfFG4d50VA8%2Fa%2Fxp2IUFWEPIVASmTpItY%2Bz9%2F%2Fwm4%2FxVic5DSo6wZ8Dd%2B938E%2Fuffxd9w0%2F%2Bnf4X%2F8uUf5P%2FO%2F5N7E4imUVFkQhQ8m5%2BU30iABEiABEiABEjgxhKgBX7VqhNleAgMXqUQvVb%2FzTDs7WJovwJIB%2FaLfy9uWf%2BA929TPJ4UKvJs2MOuFZhb6q3Mmk8p3%2FNPGExOjdX%2FA173PuLZ6SleSTKjpIvlf%2BfrATCc4fMTWQUAPrx%2Fi6fPTnNFXRT8528l0VO8OTVLAzVZF%2FGLSE%2FfFKsKRWjk6u%2F9Y%2FytvxeES9gP%2F9gELnD%2B5b%2FCf%2F3hH%2BO%2Ft9Fiaew9fpIACZAACZAACZDALSVABX7Fiv08%2B4j794HZ5xTAfXx1D%2FgevpuM%2BI9b3RvBPS%2B72RA9o6WLout6zMQVfS916YtS%2BsP8PrzHW%2FlvV2niOo2dXdxL8RhDzD4%2FwZN7H%2FD%2B0wBfO3r6zotTnL4wSv%2Fua7w5fQHndin%2FPH7pzpoB5%2B%2Fw%2F%2F5P%2FxoXefJ%2FiN%2FJr%2BsudvDi9LQuAu%2BRAAmQAAmQAAmQwI0lQAW%2BYdXd%2B%2Bo%2BZu9%2FwA8PH%2BLrRx%2Fx7Q%2FAw4ZpK6MZyzrevUTv%2BWs8WqIgV8oxN9LBAPeHQ3z8AcjN6HLv6RucWud6T8g9PHl2Hy9nn%2FHkq%2FfAsxdesjzqziM8xTcQD6KdYpEgv20vLmWBt0Lyzwz%2F3z%2F718D%2F8X%2Fib%2F2vCQCxwP8%2F%2BV1ekAAJkAAJkAAJkMDPlQB94Feq%2Bfd4%2F%2FEr3Nt5BLyfAfcfYuke1gby7z15hqd4i2%2Fco2wapCtHSfHi9A3w3PF%2FF%2BX77TfeKTleup1HuP%2FdDO%2FeA4%2BqzOtixU8fI61R3kWmssCfnuLU%2BRedN3gFqP%2Fyxe%2BK8g785b%2F%2Fv%2FDf6qM6d7UPvHuyj3OTlyRAAiRAAiRAAiRwowlQgW9afV8%2BRPr2rdFyd%2FAIQwxzH%2Fg6IdoH3h4L6W0azZPt4MWbp5h9N8uPi1TuMPaYycjG0jxp6WIHLyYDfHpuN3GK7PvKRz9ehh08uj%2FEEI889xixptv4u988NKfllDK7woAE%2F8M%2F%2BYf4b3%2BgN7H%2BVzzCf9c4ty%2FxUDyc3r7PN%2Bw2TsqIJEACJEACJEACJLDlBO5cXFwULsY%2FUWF%2F%2FPHHnyhnZgvIWfVqV67ng3%2FTycg%2BhN7HZxWuQzf96Vh%2BEiABEiABEiCBqyZw9%2B7dq85ibfm0wK%2BN7qYntD8y1cPHZxXn1N%2FIR9TuM73vHmNyWf%2BdG%2Fn8LDQJkAAJkAAJkMBtJ0AL%2FG2vYT4fCZAACZAACZAACZDAygRogV8ZGROQAAmQAAmQAAmQAAmQAAnECNCFJkaFYSRAAiRAAiRAAiRAAiSwpQSowG9pxbBYJEACJEACJEACJEACJBAjQAU%2BRoVhJEACJEACJEACJEACJLClBKjAb2nFsFgkQAIkQAIkQAIkQAIkECNABT5GhWEkQAIkQAIkQAIkQAIksKUEqMBvacWwWCRAAiRAAiRAAiRAAiQQI0AFPkaFYSRAAiRAAiRAAiRAAiSwpQSowG9pxbBYJEACJEACJEACJEACJBAjQAU%2BRoVhJEACJEACJEACJEACJLClBKjAb2nFsFgkQAIkQAIkQAIkQAIkECNABT5GhWEkQAIkQAIkQAIkQAIksKUEqMBvacWwWCRAAiRAAiRAAiRAAiQQI0AFPkaFYSRAAiRAAiRAAiRAAiSwpQS2QoG%2Fc%2BfOluJhsUiABEiABEiABEiABH5uBLZdN90KBf6LL77AtoP6uTVcPi8JkAAJkAAJkAAJ%2FBwJiE4quuk2%2F925uLi42OYCsmwkQAIkQAIkQAIkQAIkQAIFga2wwBfF4RUJkAAJkAAJkAAJkAAJkEAdASrwdXR4jwRIgARIgARIgARIgAS2jAAV%2BC2rEBaHBEiABEiABEiABEiABOoIUIGvo8N7JEACJEACJEACJEACJLBlBKjAb1mFsDgkQAIkQAIkQAIkQAIkUEeACnwdHd4jARIgARIgARIgARIggS0jQAV%2ByyqExSEBEiABEiABEiABEiCBOgJU4Ovo8B4JkAAJkAAJkAAJkAAJbBkBKvBbViEsDgmQAAmQAAmQAAmQAAnUEaACX0eH90iABEiABEiABEiABEhgywhQgd%2ByCmFxSIAESIAESIAESIAESKCOABX4Ojq8RwIkQAIkQAIkQAIkQAJbRoAK%2FJZVCItDAiRAAiRAAiRAAiRAAnUEqMDX0eE9EiABEiABEiABEiABEtgyAlTgt6xCWBwSIAESIAESIAESIAESqCNABb6ODu%2BRAAmQAAmQAAmQAAmQwJYRoAK%2FZRXC4pAACZAACZAACZAACZBAHQEq8HV0eI8ESIAESIAESIAESIAEtowAFfgtqxAWhwRIgARIgARIgARIgATqCFCBr6PDeyRAAiRAAiRAAiRAAiSwZQSowG9ZhbA4JEACJEACJEACJEACJFBH4Iu6m9ty769%2B%2BUuvKHd%2B9SvvO7%2BQAAmQAAmQAAmQAAmQwCYJ3L17d5PiNiqLFviN4qQwEiABEiABEiABEiABErhaAlTgr5YvpZMACZAACZAACZAACZDARglQgd8oTgojARIgARIgARIgARIggaslQAX%2BavlSOgmQAAmQAAmQAAmQAAlslAAV%2BI3ipDASIAESIAESIAESIAESuFoCVOCvli%2BlkwAJkAAJkAAJkAAJkMBGCVCB3yhOCiMBEiABEiABEiABEiCBqyVABf5q%2BVI6CZAACZAACZAACZAACWyUABX4jeKkMBIgARIgARIgARIgARK4WgJU4K%2BWL6WTAAmQAAmQAAmQAAmQwEYJUIHfKE4KIwESIAESIAESIAESIIGrJUAF%2Fmr5UjoJkAAJkAAJkAAJkAAJbJQAFfiN4qQwEiABEiABEiABEiABErhaAl9crfjLSf%2FtbIbfnp0BFxeeoIs%2F%2F3PcefAA%2BPt%2F3wvnFxIgARIgARIgARIgARK47QTuXFwE2vEWPPHFr3%2BNv%2F7TP8WFKO91f%2Ffv484f%2FzEgyjz%2FSIAESIAESIAESIAESGBDBO7evbshSZsXs3UK%2FG%2F%2B7M%2Fwm7dvV3vSP%2FxD3PmjP1otDWOTAAmQAAmQAAmQAAmQQAWBbVbgt8oHfi3lXaD%2Fu38HvHtXgZ%2FBJEACJEACJEACJEACJHB7CGyND7y4zaxseXfq4eLf%2Flvc%2BTt%2F58rcabKTIwxnKQaHe0icfN1LFWd67gYBaKE7OMSeSTQf9TF5MMChDQhih18l%2Fhj7OD7ohLdu1%2Ff5CP3xAu39Y9Q%2FaoaToyGm6NbWRQlOY%2FlhyjlG%2FTEWYXD0exv7xwdwa0rVX4PE9c%2Btn3mWNm830eLdmkCpkxnSgHXV4%2Bn3Et57CJh2FLyurW5DxtkJjoZT5Mnb7ju6SpuRLiJoy6qtotSWAJE7wQOnP6l65rXDzXsSLdPkQcU7p1me9fx3d6W%2BS3iOgIPDPWTS51W%2BM847FtbBkoeuf8ckcRO%2Bc4yOMvSCcaDJ%2BJAXb5P1q2RlQdvOc2p0kY9JnTmOhmfoNXyvGgm%2FhZHq6lrdO%2BsF47W8H6px53qAYNH9Ut6D5KSW9kGq3Tetp7BN1%2FdNsXfEe15pb14%2FEMqvfq78ASsulj53Rbqfc%2FDWKPDi817990%2FwO%2F%2F3%2F4I7H77Bj%2F%2F8P1RGu%2Fg3%2FwZ3%2FsW%2FqLx%2FLTdKA%2FnkWrJlJldJwJ%2BERXMynWrs3rKOSQbQWSyhDcvmmJ23kHaqpo42ov60k4b6fG1H7ihEvpj4t5LSVJHeKoKuFO%2FdMDeMvGTpxM0V1OA6kv902MfUJG1195ECzoRR80CiGVuGlTmJ0n18XDmZB0IucSUXakD0c5nPFpC6cyeCEiM7mWDR7uGgWTPwhdZ88xQJ9VwHNc9VIyhyq%2FWgQWGdNiCxk4NjHEdklYKSPRwe75WCvQDbDtr7hWHAhnkRiy8Lp50UobatdJAmfQxHSaGkZScYTc%2FR3q827rhyNlq%2FnQPst%2FsYj07QCSYVbp6NrpM9HHSPMOyPIpPHRhJKkfK2FXv389h2Mt2gn83TyIXtw2xgVfownsQP30%2F1gqlJ%2BbK%2BKNk7xADCaer0H4DqMzKZjIdvLtBJEwyHfcwCA0HYRwuvkX2cis%2F5ZIrz9n6pf6iIHgmOcTL9Uyn2HJMV2rYkFz6x11L4rGK8LBWFASUCW6HAy2kzSzesArg4r1be1ZN9%2BgT8x%2F8I%2FIN%2FUHrQaw0wylzvWFQE%2FjUi0DnAcbNRG3uHx1gybJezbCy%2FnPSyIefTIfpWc6wQ1naaSj7oBXFdBTS4pb%2B6g2SrBUwnmO%2F5KwI2nSiDmcQpG4BslPKnUXzESpOPUdLWR3N08mUTdzA%2BdixOOrzfjwyc5ZzykCoWEmHR7%2Bfx7EU%2BIEp974%2FQn6WFoiVDvkyWUrEUZzhxZk1KORbl1Yy9nZISaQa4wMos%2BRYybSnW%2FDSKrKqSRdFm9DNlaiAFxvAfOzYYr5Z%2FPuBGJhOrSVo9tq5fWR1x28rqchEJc5sAACAASURBVMopqtohgFhfIM8%2BA9qLDFnrHEmknm0enYN9tPtjjOamHY30Ssz5uI9yi9SplGUzcVZtVqzfzvwIw9Lqri2RfE6VQumGyHX%2BPoQ3Kr5b5XQyBzplPbQi1ZLgVgutxQQnWcfpD5w08wmmaKHlBC29NO8KugMc56vZsjpygsyZyNj%2BQzgU8YyVuN%2F3FPDaPN1304m4KNW5Ww%2F23UyQ7B3gOJFV5qJPzs7OgSXnb9jyO1may7AfCGK097GPcb6SpSel0vfKQHOOqrGkHYjJ%2B0WM0O%2FbZbFFqa3ZSW%2FMgq9EZieYLNrobdr6EJT35%2FZ1OxT4X%2F96c9xFid%2BEAq%2BUldgythqx0R9X3GvwJKFCV9noG8hilO0nsGwQVQqg8xi5QqXCjGV4VQt1kiLFFJOTDJ18gLOZiFUFSLsJpksmFjaFfIrlEK4lUwLFCnpQxMpORpiex5T0BHuHA%2BBoiPFo7inVReqKK3diIlHUYFpeQlYWHldEp4fuZGgULZ1uknULS2weN2JlkjyMS4e2ISfYO%2BjiaHiEE8eFRQbY8aKNbi8TGLnE9S98dvaZ5qMxFiEH4%2FKxfl71KSVv35XFHbi1cpJMnDhKmWmhq9qVGewdRVXl5j7DfKTdEo%2FFci0Kd9nNoL6EFXetsiV55TPNirjWlSoRFygoF6X04BjyXP1J4NqUi%2BjgYL%2BN%2FmyOLJtUtHcbWd7fCYqFiPXq1%2B8T9KSxmTVTuPZRq%2FtLUcN6Qh99t67s46z1mSJtTzGdzLGXT%2FStoAwnkwXaaRfZ1JlR29sVn9l8hnOZcHt9WwcHh06CfGXEd%2B2SGHaiMhyPMG%2FiMuSt9lRM5iv6JaWEK7ca10g1h3SnSVrfZ%2Fj1XpGv88j%2BpaxkmfaX91lzzAK3Xp3GyPYEOP1iB9rApib5ritdKF8EaFmxNjf2rQ9FblKXzsSruMGrOgLbocD%2FxV%2FUlXG1e%2F%2F5P68WvyJ21TKnii6KQWsNRcTkVVLo5MXvO%2F60pTJVzbbtDL%2BUoHiJVvUVF1F2ADRiSxMMNbmxs%2FHAymPSJvv7wLjwHdcytDJqU3oc8nTlzjZ8OqVYqKVKZ8k6KFNpiTSUn38f4MFkWAxwGxu0ilKHE7biTnHlWuCLUOM24ViG1b1SJ%2BqmsNcJ9nptNWhmew4nuT2fYdESBV8GTDOAKH4RX1oVrierSnKWoVpV1R1%2Bqxu3%2BkteqkzjGmucLX7dZ3aG89YDW%2FKamEbpHp0g63QwH82QHhyW0mnXlH0cuxbHZA%2B90FVCuRjMMLSKiCig06TC3WCB6GBVstiJmXSJGW42wlhNitwC1jz2SrfCwdYo6a0uuonzbnttTg%2Fako1eqSgrFnt7ZSVTTUYKTVZbws0jqYlf0sNxvT7T4MkynIymEDeIet3dPrf0occm33kuXz2X9BH9vnJXKO1BEiu%2BsqjL6kFVe8%2FF1V9caf3KxLl%2BxVIUzBEOGu%2FLqn%2BY%2BN1Or4vZcIY5Or7rh3IPbKOXnGFsk%2BZ9czAWqPAZ0sGhlnF%2BVtMXAcrVpBWbsOuMkr0e2tNxhZHDFmYDn51U5eOuPuYT8uCVTpIE52Oz%2BhYotfORGadifYgtZpDGBvufzSzwqozK2chP3fRbrjd4fYekDvoLdb%2BpVMZzCWyHAr9BC7y44txxn3Cd66XLPRtSRGzZvNm9DdSfSlm91k2sc4yGUxmV8iXH%2BckJMmglUC%2FpidJyrDtR1akOcQR%2F899iPFNxxDir0ljr3OBY%2BfBqOSOcdIoNvv6TN%2F%2BmZfnL8Cqsf7R0c9diPMIDO4ArZdUujTfPvy5m2RWjLnZwT1mQ5LkCBTyIVvlVBo7xGJP5nmN1Nhav3gGSzLF4SVyMMZtn2MutWjquWN3VOJO2gfEUwyPErSVWuTd%2B5NFymXzOqmcB0WRuYJZlyvWnTkRoPRZ%2FVfVn%2FZtbbdjlYrWUHVni7xwM0D1yLPjQKxdd5WcjbOpW4XxLa2nQsg%2FUZPBKD%2FJ30Sbb3Geh4IUT4%2FloheWZyxQonwh1Kjf2eeIbKSleCu%2BLbhsttNviQlZWZqw7QJ5oYQwo7T9CN%2FtzM9nX9Ss%2B%2BNLX9EvmxrD%2Bc2nli5XrN4N6BUpW80K0Zxwpgiuvzi%2FzQlZKdW4kHaSt8oqgKNky1nTg7BUzcacz34%2FHKuSyFSjppGhNpxhX%2ButrRrKnpXpO2IHq0q742ROZ%2BB931OELsiKKsyHGFb7yUfcu46Ynq2G5UuygzS%2Fr%2BhK5N9X91UEDX1Vp0%2BOsjXbLmtvyXHixRQS2QoHfIh6qKI02iSzbPNTIQniVT14MzCvlElHCOmJOU392Sc1YQCRMLJXtKcaynOxYetv7hVXKdrboHuQ%2BkNb6cfm%2B01p9B7lsXawDdGfDimVb%2FTTy%2F%2Fa%2BM4FQKysLhANHEbv5VahANk1ZDLzakiiblXJ9uqmQPF4HvW4LQ3cgVP6mxtf7JI8otlQ9mLn1aDbPdu2yt%2FUrFyVeRoOoItVy3AVc%2Bf61UsJrhlY%2FtvvN1HcLGNdM0JZPnMQKtID8VJyKKwOcnpk4vPU75OZeXMs9x3eouAHRrmRysd5f2XKvDfSB1SoXniBJrDU5D2x%2BkdehXtLXvtQzNfGtVnzi4rU%2FcBvdbobpWYputtxFQK32ac1ETxJjG%2BCkbgKXRXm%2FhnW6RZWVUj2v3iQrSspiiXFEGQK8U0V%2BH3vKLcGZ%2FAoOb%2BVOViiC%2Bzmydeo3T2wuMoj7dJUyJ2wcdbi0oupJEx69BJjVrax5Kdb8ElkRdA1lxeKHWhXspC1Mp67FXrfPfKOwGL2UR54o8bLzID5haraJetmzV7xfFW3MW3nL3y93PG64SVuR1nnP0n10szGmFXnmlRKs5qnVRZxjISfo7Z9hWOXCkgsQlDJRTbB%2F2ENm%2Bkj39lrX5%2B7eAC3BGlDWksdEisBWKPC%2F%2BL3fw2835EZz57K%2Fymo6lX1vPT3eWmRZsDWcBhZOMTmf4dzbneK7jrj%2BhoXCFs%2Fj2kOt9UM6irzzMaUwikl0s1bdDiRrBYlYZisVOTVouyN0vIPWylLshBZRbKQulnXOTQiXrXTxVEWXVK1AaveDZUcBal9yoCU%2BkmZJ2d9v6vojR44iNAXUkyfrsqIt6q20p1TnUMnU7XmGebanlFjtZ5rCO%2FzGbABUis1Ud8q%2BInGOJpMyWSpe%2FU8GM8cXPKp0F1IrJ1GqXQdr150DDOQEjskcibP5q5BWXJUstPaWp8TZwFU%2F%2FXZeKGOiAOxj1O%2FjyJ5kkU8UXOVg1fx0fBno0W4D2QMMxBd8OEJSNOdKoS5j2w7knU7EyihKZmVKtTSnTv2AbKZe8a%2F6%2FdIKT3ikZaV4a12vjKB0w7q7%2Bl5JTludclROuE79BlJUvbcQd582lmfXK8td4ZV3xjsGUNdDa4k7SlCC9b4GK4J1hjJr4MltD%2BL2J0q6%2B9ra5zJjhSjO4XjaaGXBjk%2BVTxW%2BXxV9uOqny3tzrFj1LqsjpKGPQvY7dBtNfdp3SdxmpC0fmk33NtyLbL%2BourVftAvbGHql8cHBnhoPfeN73bvy%2B9IwoG08Ol6xyBSMPWoLhTnhK9a3SpE8XcLkWxSVV2sS2A4F%2Fu%2F%2B3SUK%2FL%2FEX%2F%2FyXzZ7xL%2F9t5vFq4hVLOlVRHCDrfV5Ij62e%2Fr4JLk%2FnwHnU4xOBjg8ll01c4wiG0eKwdkV%2BlNfm87KKI1lS2ud3%2F0Gyx47KWKD4lcT1eCZTeddllvR2ZcjFiHKpQCFXmMHKhsjNgjbe%2BFn3kbn2OtlmJ230asy6ZvJm3ajkWZ8jlbaidrJ7eYqpcDZjWBmIKyclEnZ1EDcUv7VYVHrv5tJsKsk2xUBYzmPTQnCAT12bKPNV00qzqxftw01n4p5hpYMuktOKdEpypZWFR6zoAVWsyBn52sHB8eixA8xSrQrmnPzEpcZ5rMEaQ9YiOlWtTejAHgnKLkDd0uZKLQi7Q%2FIwjER48ZiCrHK5xOOoITS14qvei87wlCWQn6KP7c9RfLXFvjIjTDIkyNt1bXAW2NCmCj83qx%2BoxPrQNRKE2T13s6UW070ZQ9kr%2F%2FVrAiq8TLBbCH9qquRu5KLFUE5DsduoI%2FG9owK1i3TMq8z4Girfks2e6zypyZQScUEqkqQ5NVCKqsdgNoQL3sCxJ%2Ff7Y5Ve5ul6JkHlfcr%2BsxV2Tjh%2Bt3U408RvMZ4JHuXluyjKOTLVWgakoNvaIH3GW3m23Yo8L%2F3e5t5GpFy%2F%2F76stwlvYZSQqulJJPOpt2VXfVmoF33DWxYhiuJZpVGZd2wVlnxJzwP%2FKSvJPfmQtXgEyuTtkRVKaDNM5BBVVdgeTnd7QzlTOqyVH0MVwrTb5sIcYu%2BVjaBk4neTConYXhL4WXxjUI6ytFzhhEWS84PTqCWrsWNpoN6Zd%2FkrGTL0XvKId0M0JXHVxY%2B9e6gtfQhjHVTrE%2BlhTGrxI9O1pgU%2BDnriYcfJt%2FUJEVcLQ71KSUPzCklR5m%2F78OmzE%2FI8E5VqLB2BVYzK6P6U9qjaWiRcbI6XfUdWe2ZpQc4jLS2fALkTRpDpaAs21pXjw8SZW2UCUfvQQvKIprZHww6ht4jU05%2FbSEly3kk59plhEh8NyhfJXED666X1a91Y6zaF6Pda%2BpyKN8TZVn2yjj7X7z6LqdYN0SvCM4wGUFtpPf7RV%2Bq7bfEu6Ze2dfprKumXQGsXCE32Wj3kjb2V%2BqMAPV%2Bt3urKdbm4ID8eWV83T%2Fz3Pb0qqbsL6uqW6gJcdVRpeqxlhkDpD22%2FPHIPwpzmbFK%2BrHitKjymOjXYf6NFvgcxSYvtkOBT1OI60vlWfB%2F8L%2Fj7rMdYMkPOSnl%2FTJHSBrL00qAraJrE8kkQI6qU0tWZ%2BiP5di5nr17jZ9aYVj5F0tl4%2BS8g4Nop2asIlNr5dCPIy%2FxJDl0Nkpe42PCKo1hmcxxhtHnWLV8orDIiTpt7A%2FkwDtzdkuWoDdIMVIbI%2F2lcZ2DHmzFr9jfSFrfSe4d6rPQPLfQVYvsxjenJk1rLV46gV66nmAyAc6DQUoUWX2GeiFcWcZa3dzNRs47lr0HZf900x7lNJX640EK4fbKs27aQOdTlPiOKNprbLqc6V8A1tKkDu1s25ZX%2Bxrr4KJGxLqVyObF%2Fnlp2V5tilUTS6eMV3W5gb022Vmiz2cuHk%2BVttr6V0xqo4%2BlDCGFdVWsd%2FKX2T0XjU8RikrfbOCStqUVlKos9a%2BypnK0dmkiUOVCUyWrItyrX2mTYyxEGbLNNJqs2T4UN6koy%2BNx0YeqyWySVhvk1Ypj2YLsyoxe2xVBtSGzWlFVaU2%2FNYso%2B1Iv4ck5SrFGO7dey0rSQXeGYWQVSNWr%2BoEiZz9XtMBBYH40ZW0FhInUUZnWdTG%2FKf3WQH4bwHE%2FqVHeJd0qLjR5Ps6Fmlifw%2FwQmV4NqJXppLUb8adJFwMTrvr7oyH6RzwG0kN1TV%2B2QoGXZ%2F2df%2FpP8eOf%2FMmlHvvOH%2F%2FxpdJfOrHTqalXw%2FjVjuaZslzHfjxh2YT50mVaVUCyh%2FSs7%2FxYjK9syqA%2BODlSvypn1SVlpVulP1u1TEviK3cO%2BZEM2xFKfBnklnSGS8RqH8AjfXSXPKP7QyAqrVLS9K9BqgFBNgjllgat9GeSTv1EuT1XeXmum49hLeuBP3s0I22N0%2FsK%2FUqVU1myo77aUJgnFQXIU8jNcqtY8Nz6kASluLmUsmXJcCxirHcVPcLTfenkBJBgL6qyuJsTH3J9PpK9dSOSuhdFXj1fL8OkwUQpIs4ElV1v3OK66bTC4vwCmHtzhevOQQBghbSlqMb1Tk4WCefOyq1jlmGeZSgpMyVB6waIBbqZAqvqb0k20TjKqi71ZFbKxGWyYiKgV2NcRXjd%2BrUTSplk1ii%2BykVtiXtH4M6gFTjzi67KHa2HM6Xc%2Bu%2B%2Fi8o%2Bl7c%2Fxo1Qc61X7YC0WrxJbfqtqfwysd63Y8VKvfRG7jgV7%2FP1Oyp9cfHDaFqGcIwr775F2vHfdtq23ddvy1P7WfVL2tJHuj%2B0IPXi%2FsJvrdA1bs5H6jcr9o9lc6oo3cVJXMulOeOZ92Lr%2Fj6RTeX9M%2B9IXZ%2Bj635ncnPdCas6ueUF%2B1nH2BoF%2Fs7v%2FR6%2BePoUv3n7tlwh%2F%2BGf48clP8J65x%2F9I%2BCyG1iDnO1AboPzHfA2wPuU4xfLFgnpQA7FB37qK8KSVOQXLhLWyusJNV9i58CX5fkpV%2FVbK1Jr37nie3ilO8Uw1HwPVyRUsLMsnCcLwqLp8sjli9DCafwgyxFNSCg%2F%2FK6iuczMgCnn6NcNmLl4%2BfloXYejk7%2BJdDaGKO%2BHqrPTSr7Utz0EoPlGSJE5hbudV2cZ6RCNEhGrv1idxcJEdvKgBWSFH6Z5RLXu0NgX0qkPbe0CutaxsxBo%2FK3tKUfuDX1d7yVilRqbro394Jf%2BchcQG0W5Btgv8c8Yv3hMHepylGeVlQtvjAsTG0XA7mHzlRN%2FJcfrI8IBX%2B2rqVHmwnyv4LuuW7UxAF05DUdWQfJ2H2QoFtXJEGPVF9b7HRdyjQx7lGkgUn0NeMokOndViMQvyY7EiQZZJV1WEOy1RJSTc5wE9ePGevWrzgCP9EWxZxGF3NWNvfJIucMZqym7tPt9%2BfGuoZzIHmwYdZ5PLmWVqYl7ovtu5CKcvqE2THoctdk9ie7baf6eOmNNroRHXGCiY4It4ZK2baNFPr3JjttWY3Uh77gcuSR%2FbhuLyFVBQZ%2Fg9iVFvctq0AmOxnrCqdqG%2BLSrtJDjvPxfEC7lq1d%2BUPPbCnnbUT%2FSt6JlX8pRKEJVT8rwCIE7FxcXF5HwnyzoN3%2F2Z3ElvqZESnl%2F8qQmBm%2FdHgJaaZulVjm%2BPU%2B2HU9yNXz1YLJs0rkdBFgKEiCBOgLSRxR%2B0HUxL3tP9RtLjvpcOQ%2Bj9JYm9ysLYoKfA4G7d%2B9u7WNunQIvpC5%2B%2FWv89Z%2F%2BabVPvMV5%2Fz6U28yGLe9WPD%2B3kIDqfCO%2FGLqFRb2RRTJWmf0mPy%2B%2B6gOagVMly12NVhXC%2BCRAAj8LAspaXV7V3syzuyveNCxshuntlEIFfs16%2Fe1sht%2F%2B%2Btcli%2FydP%2FxDfdrMZTasrlkmJvtpCLhLxc033fw0Zb2RueZLuxzMbmT9sdAkcGsIFMo1%2B%2FpbU6k39kGowF%2By6v7ql7%2F0JNz51a%2B87%2FxCAiRAAiRAAiRAAiRAApsksM0K%2FC82%2BaCURQIkQAIkQAIkQAIkQAIkcLUEqMBfLV9KJwESIAESIAESIAESIIGNEqACv1GcFEYCJEACJEACJEACJEACV0uACvzV8qV0EiABEiABEiABEiABEtgoASrwG8VJYSRAAiRAAiRAAiRAAiRwtQSowF8tX0onARIgARIgARIgARIggY0SoAK%2FUZwURgIkQAIkQAIkQAIkQAJXS4AK%2FNXypXQSIAESIAESIAESIAES2CgBKvAbxUlhJEACJEACJEACJEACJHC1BL64WvG3Q%2Fp81McY%2Bzg%2B6Cx9oOzkCMPp%2BdJ4NkL9T0XLT0pP8GBwiL3Epqj6zHByNMQsHeAwiKzKdNZrVP4q6ZsN12WdoovB4R5qH20%2BQn%2B8QD2nsHQryHeSSj3P0mOoajb5Orejl62u5i1pJw%2FK7G2iZfdtvMt%2Bqra6aKEbaTP6HoB2RVuWZ548KNdJdoKjEXBQVVcOK6mnXnaEoWpviWqTZz3DNHy4PL8Ek%2F4M6fEBat8wKcdwiuZvl82wjX2RvWr6lm2fxU%2B7W4mNPqs4N0pcH2lpe1r1WfPsDCv13bxHSdBelOwz9PL6qu57crEApMz5%2B%2BXecK7noyNkvbr%2BTud11tsHxmNg329bXl%2B3lIH7rE4hzKWSNUvL70MQtboubFn9MrrJvfK6NwyvcWbbYHCz8qupsyV9q1cXzvtbKRaA7euKOM3qvYhvr6q5VPMwz1Xz8odjhF8vK77D%2BbtvyixtKe8Dl5cFbvq1065YZqe%2FEY4jHBS6wNI6jr0L8pzqobGX6XHY1mD4GbIP76%2F83SnvSmPKyhnd7ARU4JfW3xwzpRDVqhaelFJHlysqrrJqOjEvZfilg153guFwhCQfLMM45ns2x%2By8jV6gvANzTKZAd9C8%2FBU53PrgTq%2BLybCPI6WUH%2BD42DxytP5cHBmS3j6S4RD9s0DZcaNdxXWgpEjbOz6QKVF5kCnumYJ4AwuATg%2FdyRCjk07R8UfLHAwsMlgdHxQTsXkCnOmEnbSN6dgy9adq89kCrbSHBIlu50cnSlnKZMK88DPWA8QeDo%2F3%2FBv2m%2BGQBAqdva0%2Bk3h6f6D3UpgvHRzkjUEH%2BYqGeZerJioxkVcdVvGsKtsmrJQCOcTUKO%2BewueUXXGYnqsJ9qHbxZgBuNQX5mlt%2B%2FQVh06aoD88AiIT0DypupA62ceof4STuriOIuXVs2JgGqkveOVvnYN9zPpDjJKYot7CA7%2FZe%2FKTvQN0j4Y4OilP%2FjsHA3VvMt%2FTRgUvZcWX%2BQTT8xZarWnte7x%2BX%2Bfkq%2FJqY7805jhxopcJ9g66OBqOMPfGtQzz2TnaPbchWQEJ9g6Pod7%2Byv542XtYNmxE27WSb%2FOt%2FryM0to8bbMy6%2F6oKKu0q1TaFUy76jjjWRGt5sq8n%2FL%2BS%2FtNVk1fIzp6azNjSlT0LQ6kAh9Wrhncwon%2BYtjHNIyrvpdfsGi0BoF2MCxHPce43w%2BCi4FPOiGr8BTx9P3kZIIFzlEqvzNbDwRfw1enM16W28odjwhcQb6bvyg9A%2BBoOMF8r7AGZ1kGJGmhoLpp1HWCJEmMQjHGaH6MdFbUSR59MUTfaUTNO%2FFcQsVF0RbCCKvloQfW2XCEk06dFdRRaGsHuwQykBx3xHIeypSJcRs9NdkAkr1D7J%2F1oZSVg2PYuZOdiCxTteaTKc7b%2B%2FCUSA%2BGVRi9wOJLUDf2Rq6ARvuFMbzXctxH8ZZW14mV3fizUmFpLMGLuJyVtpbLitKxUc60kmqUZSVtofokNSmUEV749B2rvHpvNfOYYjsf6dVCKz8vYOcAg%2B5RM6MFpB0aZU8Y2U4Qul7a3W4u9movOjgYdHE0OkHWcY00TXKVvmofZ%2F0JZN47zp%2FBSeu1K2UKj68KSB3Y1UoID78fcyTKC7dmX2elzDEyZS3GHHsv%2BHQmUfmdZA8Hg7m83tJd6z9lhGohtd%2FzyO6F5JuhO9AGA29S5karulbv8QxpZNKnxlFZaU%2BdxF67AobSgbe7aNSyLpPWKcJ6l7Zdhf1uA2mmr4MYg1aenDWQH42yiTElKvhWB1KBj1Zv08FXZo2TqIS1Axsp1pLvzMsiVzQkVL2AZ%2BpzpKzvx54LTjhb9wT93L8oy6VACCwCRilw8eTKseEtLgW5pbbjKqGFQhS6N7nytuJaBtbuDKN5hr3LdN5ZVozNEWtwJhPLdg8H8tA5v2P9fVUQ8xHGC3lnY5Y7X1heZ05wlRKgwp147rK4foesW1pg%2BbPvn5v2Sq7LkxKvH4jl2YSVigMgMqlZjE7QUZUW9JHZGc5bD5BEVn7gKqALZ5LjyHfLLZO%2BQSdBEihA3uO4MqHLIoskXr1IPfjdpCdio1%2BkjR%2BKxLDfgGh9gfEnNPoUE5FgoWeFIs4xGqrO3ljrzUTIrGpFdeJ1%2BjpTovlojEVMMQ9LLHVoh8i6%2Bmx1sZ%2FOcI5zTEu8bFuT9q7dpmzXpCeWKyip8szKSKNXeSwX2wcohXXuNBprQFLPYd0LpRxiiSm%2Ff%2FbxdXs2Vuu10tqSxXjIu%2Bm8RzbTtr2wn0W7siHLP6UdyQRH6wzyPnmuOMsFXF2MJWPK1WW8vZKpwF9B3ZxPfUurzmKhZ%2B9BfqV3Lri%2F%2FtcMk9FCfGc85T0mT1kerMtCqVMOOynbmWpJKm2mO9%2Bx9f03MuDtB4inW%2BoDr5ShKXzXiLBMZf9MWy4rP%2F%2FeO8Mwt3IVA6ka%2BE35tZJnLQI6L9%2BP24TlMDtI21OM%2B0dR3%2FM82pVdaGtoLl7xX67M5vGDC7GGK13Ehotyhgf2m1aSbF2r0FjbjoVZ3uLWdQ5spPEXlsDZHOgsfexAwWrvY988mfceOOH5g%2F%2BUF%2BfTcv%2BxmACDY73EbXymra4UL2pDVlZpiQgRH%2FV55poodaRwlSo2UYqIU0HC3S%2B3rGhVLdvH3scqyRsIj3EXsaV%2B0uZl%2Bw35Lm0t3MOkw2zsxp%2BqH4xbjrUiOcZCjD9WsxV8ZlVrOEq8%2FU%2BX6%2Bu0MUJPmFdcbTDtKq4UCpdz389eFN9Zmpc9OxlBdTve5E0TVBPL6uU3g9lXhmWioP4Wfajhz5lQolX0dxJH3P3g9IE6obPS6ynp%2Bq79%2F2XSArbPtNLie0lUndplSimLHeOkTaSz4nshpnxl2nS%2BqpWdYDRN0FM%2BNOXomwxx26SWGxs%2FYmFlPpss17bLogJfW0PBYJ%2FH9ZXRPNhcuNYkFRR9uUMlMJRy2e8JeoeH9ZsClfHzyFgvjctIdoKTObCnFCH9%2FJmzlKaUnP5Ibwq0RTyfYoIBjtWLrtPopcZ9HCurqA4bj%2BZ5Z2yTrv5p6kQ6przDlrAG%2FucyGM%2BkTGJC1PynYlGUzZl7hzjei9VJhrPzNtI6xTAR15NjdGTCMpljr8Fm59Wfuy6F0x5VWyviLiKDXT4oFNFqr0LlTLMySWJtW5SNfMNXWbSyvpeD1woRS2DW3Ud3NlZu90oZjG4m1oOtyiQwc85HOuuO57ojYcf%2B%2B1NS5updaNZ6IDeROxAHCqN%2BzoOlk3NfXFNWVklzU%2BtrrZhnQEsmrIXDkNxt7%2BuXRHyVtUtNkw3H0naP1YTRHcSrJwBaube6SrmEEjLTivN%2BCoR15ippTWaQAfdSfm4dhaunymKYVLuEOGnzMUOFiYuI78Jm3Z4c%2FdwUxekPVb%2Bj%2BzB7mIH1o%2B%2BPir05l%2Brr7ArO4AEmfTncIfIXcohECYPyPuGs8KmRfqflbCDw%2Bh1PgDzzCPOsrpOWBGVlT96j0sZqqQNvRplBvCh1uxJj0qCkynvF8b5cJq0nqPkXZ6I0lBfFnZDXTgTdLPSKjhjOmm3%2BL7N1pS279upW8berHSblkjFlmfzbep8K%2FNKabmu2ewAAIABJREFUDRumdJjOEluQPjs7L0%2FUgzi1XxeBUlAZuQ3XDla2%2BhvzZuxlkK7MdIyqvC3HvzvZy5UC1anKAOaMGrL5qbWYwrN2tro4yOOINRpYiEtDrsjKZtwWFjPHraLyuepv6I7elS3xOzjYbyufz5Osk5e%2FJEmeJS9Tgr2ebLCcYZ4Vz2zTuMqEhC0CZUXFU8px0T5UJ2QmRdGTiDzlQSQUaW2%2Bm%2F7MFaFYB6gGpeU5Shux7aUythoYRGEThSxFcj4rXGiUJdKcMqOsOkC73dJWr0qBy29IHanTofYSnJhXUhSW7GiI%2Fqzq9A6j8FjxjqVdTU7tSlRMCXGVOaVoySEoxV4JK9K6BOXf172wA29JoVhd4DqscqVSZedObh3LY1VRIm5TVVFtuB3ElVIlgXmbsjG05bsrLvdKo7JuBub%2BfGROAEuQHh8qxWPm1pkjZtN1pPqLcFaRuxU5GbtKvdkYqCZjNorU%2BUD2jPQxNWWXlcyoi5hqg%2FqErmrvMV1XyaiPft%2BZ6Nv8Iv3Vsr5OzX%2BzE0yM65KrNkc5OHnJpfQn525f2GqrqVR3v4uZ9MfooAO9oTXpBXVsZXnjmjyjrBlmOLH3S58ruJNIHbgPJZt10ULrPEFvkGIyHKq%2BS0ZYr8%2BAtRA7%2Ffpl0qpn8FcN8sdq5EKTx84vsvkM5%2B2eHiOFobPCkUdSxq0xFlK%2FikNs87%2FuR8NToAoZG7jK3%2F8lY8oGsrqpIqjAb1nN%2BYNmVeHKkwgvnWr4ZjSRTWFyrF%2F%2FLFc23EmGnBKCsV6ez5U9k62KF1qwzL2KblXdTR60gEz8YYO%2F8zNHqXPvaeXA9crwnseJqsrU7vmWUbmfPICohI4Bx0m1%2BqVVJlZJqQYvdeycWPOLlCp8muT8izubugpdaOzyb%2F0JGM1y16cwpZGBtBi8FhiO5CSaY1PnGbKWtTzpox%2FR3UciE4bsDMn%2BoTpqchEqPM0KpGIVrGWEcWciWmFRqyH9WcmSqSZ7gQW%2BsLT7%2Bxa84uQ%2BzhKa4WSiFSd3nM%2Fj577Fecg1XGjeSWQH4LqsykYB4%2FUk%2FUuwwqLaQsOjdhvDsJMA05%2FZYyuzkxlKJhSjjAy6GYZnabl%2FCDO98jrSbUSfshRmvuS7eW5hqlYyI4oylPIuE8hglahCtFpdEo79I2SBdX%2Bdvq4im1JwuHpnI%2BT9u2lLvUPZlDrHGYxxKDGnqjkvWNHfWClWYZbvojSrzRn2pv%2Bp2lDFilBMGXaMK%2BIC0067yGZAouqmo4%2FHVcZt02d4E4oi68uk1VKcyYARKxzCVQP1ji%2FrT41LTL5XqHOA%2FVk%2FOAHJjMUyYSke49quijpeYUwpKRrXVtyfPCMq8FdQBbGBD%2Fns3M%2FQdQN2FWs%2FVvhtBWuC8YUc4AhDs6HJk2asfOrFMe4WniIfs0R6AjbxpYFFbxPZrCqjrtMXWZ51T1uMWmnHn7gYi7MMLs5YtGpJ6uO75VADiUQX159VF4NkYuj77OoVj8ANQCkPxvKXxs6OFzeHc4zNZrR8sJZiJQdqo2pWbSqrf1Z5MrW3QiZE1T64SilJRugP%2B5jJsaDJpJkfaCn3Nv6om%2BHP3dmljRN1T7I35bM8%2BLp3N3FdDHimPQaNbC1WZjXNqzfjchbqCFq%2B9l3WGwAd%2F9uVHjBuHY6JkBOfzmcyaXNGbmM1lfa6DX%2FaXztyxGLMKr%2B0wDJBD9wWTb%2B9NKkbwU6I3DB7vVJfZxOt%2Fyl1qP68%2FTV6pXY4OcFJok%2BVcpuz5%2BIWVZhrLPAVzx5Thr2nkpWGrIuDHjAqzRq9mOUvl0mrpDUf51V%2FVy6BFyJuWMolxgktbQKWFQM5OrKX4Uj53ziRr%2FLyMmPKVZZry2VTgV9aQbElLN99pRAh1krxBQ3OA67qbI6G9rhspXBlWQsxS2chf%2F0r18ri2iutRN05mtm38Y9RlvSpXdK0MX%2Faz8oyqYGgjegRwpcqcoVioerUEWyPQOs4SoUoPfoYIOPWY9wQNnleuDy3e8SlXf6dj7BopYgYzp1C28vCrUTabu4NpVwSgFZrgbF7moWrPMytjNinq8CWJwexFMvCtMJaUSdhYlVOyXekzgovGd4lvlJcnOMPQxnm%2B%2B%2FbFRU10MRcZ8y7E%2F7oUYW8TQV7So0IVc%2BjNzsmEznKdA1WnUOlGscMEbnBwazMiZKv9r5IvuYYyZCzqjPHOq%2BthfYEnxoSc1Hk9vTZ3240WW1b2H7pMu3qMmndAvnXuo1qi7CrgEqsKot0IcG0IznHWIwnxpdDyez3%2FU2eRaINXVW0lbCvy3MLVv5seN5IbID7KStFwcpgIr8Eof%2BSvR7a0zGm51KWkJ4rZ4Vr9c5a37hIuqgFXuK1sb8PJD1ZHYhYHFSbd636zoqAGFV6Z%2BunPdyDfwhEUO5omd3%2BNoifnywVOb1GXETtXjA7flzGwhJk3ejrTzimNCrflkaiAr%2B0YmpeijCt8m9cdo5tmMh8l5nveYJ925NVRNtUsLWAzEeyFh63DiedFK3pFP7m0zlGRxl6Vb%2FKuakCVsixHXypTOOFGtw21OXrX4180Oi0X1VS5VvYSuHq73LWtbJm5Bqx%2FQGTPkbhJK%2F0vHogt5vRSrdNgCzRth70gtsNl%2B9F%2BT%2BXQUef4uOeYGEtq3oyqsuif1%2Bn2uothdDKi1iDZQn2vHBpcn1%2Fg9I2%2FiqDkPwyZY3lvSzLtWKJwia%2BneW%2FcEOmiuGubKiA4hSXPL4ZqOVkI6XM5nVdzsMPaVa%2FfpoG39RENkGSXY6VzMtqLfAhG8lXHSPpl1G1B0d5l7v2x4v6R1X7FIBscoT%2BuRyiZWdOhbLY3h8gbVlXC9lXE6wQ%2BUWo%2FraJNmmkq9VTNX%2By%2FupFn5q%2FEyqujCduL2VczcTrzSqaorjnG%2FR1Bmqipu6vcGRi9ZN7d6R8sxX6uiJxhcJfRChfyTiHFANrgNe7Q%2FN4esVPvi78fVZ5jLoLvZJbiuEqh6WbywNUbcWsXhVWfVeiPibXDTHXDdJCHaxQTqvqy%2F5iePm2CTEnfYkro%2BwnmOher2RcVLGlL5JNwOW9YJXiV7pxub4uf3%2BuYkxZ6Tm2LzIV%2BNo6cQf%2F2ojqZvVJAcvSGoWrO1jbzaJsLasyg%2BhVArsDttN7gCP3NAHXZUZ1MolSeoo9nLrTvqZ5RgSc1MlA%2BSAWZdKrHsGYF0nbLEhObpGTdw47cxxNC8WhlDo%2Faix0n9Ed1lT9nHkxWOcdEYDz8ZJfkIxa9MMSxP3TK5fvveS6zSkrX76xVyJYJVfq2Z5iJAOjOjwZ4ZF0uUhl%2BdXL3tZqqBUS85yi4LUb%2BCbnAu2FuAIZi51s%2Bitw2ggrfhYTct8SHFhjo1ZHaXvFT0zp%2BpxiaI7ikHcw%2F%2BXDZaVqVL%2BOkGD%2FiCh0MRTqyLr2PjqdzgZYOfmHl0F5YpZl4ev%2BGFQhQtqT%2FHjR2Nubo%2B9rhfZclPdukp8JHk6OxIo7nZwgEw0pmDh4G66DchZlAOyGvhhHN179tX5fpL%2FYPxtiKJungwlmaZXECjTvjOwPSWdD9GX1Rp2QZSMEn5dURANp6uvqfZ2RosaGmEQ3TCuR9nSifO%2BIsmjreHbio%2B4dDY3lXW9Alo28fXc8ckXLdbA%2FK66cmkSGtTqOOJF9OcWRnNJOi7POi%2Frc%2Bt%2FsCHnY705fvA95x2QvUHHcrI1WfMr76B0cXNzaxNWqfZ3N03mOzY4pNoOb%2F0kFfuU6NMqZ%2FanWVte4KWhlyreulIW7SpxaopPRQxo43JNcyumWhXjWMtXwrbdqUF4RJJ2iHbWWWgJ8pSUsR2xwct11bPwwLJbOxi1%2FBkuuDX5pNZQffld5hAOi6mgcq5Kyujjf3YK5Cl6pg9L%2B54B%2FdrcMMPn4rNLXHDmpLJq%2BRd%2FNXl3PZ%2FrHkLzZlAyaYrksLICldCpAW6usfVOCXKt73j7yxFbpEteFRJ30Yt3CW92e%2BiXaQ3fnrqQTvvvaD11%2B9qS9X7PJLM9HFQRHQ2dpOn%2FH3EhXdG0HDRHftqczRd4h9TxOfZriCMO%2BmI5jGw%2FdIjepXxu%2F00O3NSwd22hv%2B5%2Bhhde%2Fu%2Fo399ntqRTi8lB9jGShjElusd%2FEkHB5rwZ4cDQMVvj0sa32dJ89t4E6hZf%2BRH65dzjUKwWJU29tu4yZdJSlPl8tcdLrS8NKWbZj6zISy3%2BHfRHaxaI4f%2F0YxyLLtSz4CZxvOq38TodSFPeOoU%2BKcaJUXlb0SZXxIzfW7esiomyQP7aZUHessf7VHbdNSR1AHQPsHlesfin2eE%2Bt6OnTc1LMvNUzYVCexNo%2BTOfeQld8CE39Fgq%2B%2FrG6oXUb2TtEb2Q3c%2BrxTp6lboVI5MeP6LU06utoWdrKfTdWfNSFRm620H2e6jFeGWZMmyz9OJYV5H7Wl7l8KpTtD1wZketGfZ3bJuSd3vCYEinWbQi6c3FxcbHtD%2FJXv%2FylV8Q7v%2FqV951fbjEB1fnGfI5v8TMbZbqwCt3uZ%2F05Pp1v9fs5EuAzkwAJ%2FBwI3PS%2B7u7du1tbTVTgt7ZqWLDcknfNGwNJngRIgARIgARIgAS2WYGnCw3b5xYSsH7Yaied8%2BNLW1hUFokESIAESIAESIAErpkAFfhrBs7smhCo97tvIoFxSIAESIAESIAESOC2EvjFbX0wPhcJkAAJkAAJkAAJkAAJ3EYCVOBvY63ymUiABEiABEiABEiABG4tASrwt7Zq%2BWAkQAIkQAIkQAIkQAK3kQAV%2BNtYq3wmEiABEiABEiABEiCBW0uACvytrVo%2BGAmQAAmQAAmQAAmQwG0kQAX%2BNtYqn4kESIAESIAESIAESODWEqACf2urlg9GAiRAAiRAAiRAAiRwGwlQgb%2BNtcpnIgESIAESIAESIAESuLUEqMDf2qrlg5EACZAACZAACZAACdxGAvwl1litzkfojxexO%2BWw9j6ODzpO%2BByj%2FhjLU7exf3wAN6UIyU6OMDzr5TLnoz6qitLeP4bKOjvB0STBoVMOSTdLzf28dFK2GdJIvnmU%2FKL6OfJ887grXkh5h1Ocr5gMaKE7OMReEkmo6gxRpm7skK97T5hNHgxwGM3AxsxwcjTELC3Hq5Mtqevq0krPP1tdDA73EHtUG2dZfhJP4kySQ91ObELouoVtP3n4kgtVbzOkVXWwJPmtuy08RsDBknqyz63rP3zv4%2B9Z7Ttm%2B6dS32Nz0p9L28ey8ks%2Bkwfxdij3ZmneT3k5q3Zyhl7QzywtjwiJlKlROlUAYTnBA6d9RtPORzjKeuX3PPK85T6hnIf37Hk5xtIZBe9dELOCkxZRw14ieJx0nzRd2qGGbU91SuiropbHoqC03lfFdZaW20bdM3kSnC%2BN0swxOsrQi7xr5TpyZOeXNfWm3qesemzJZfCCBLaLABX4qvporEDFBNQomiq6dCazWMJoWKsbKou6wz7LY3eQYoj%2BUaH0dXpdTIZHOMkHM0kzRtYd%2BJMG1Xn5041CeQifI8w3L8BqF8keDo%2F3ymlUWZYr4eWEzUOSvQN0j4Y4OgmZahlJUqcyy8A5x%2By8jV5JyZ9jMgW6g3BKVpStc3CM4%2BJr5MoOxC10D6zybsMi0VXQGP1%2B5J5tv50UmdcOZCIxxkLuVxc1IlAefYbzVorOEkQ6sbRxmciGbSgQbdvfEmU0SKUnuq7GUpFeKRpuPADl98lMnKfJ0glgWI5l38v5LzB2Kqy9vy8lKpQHpczM8KCCsZXX3h%2FgwcR%2F58Oy6LY%2BwknWiU96wwTB9yzL0Ep70UnkfLZA60EvSFHzNTvBSNVD0F7Dekv2cJAeYdg%2FW70usgQP2ueYDvuYlfpMXTY9iWqhLdiDP%2FVMwfN2DvYx649w0qkwHAQyVvoqz9o9wvDopKwIi6AkibJXeSR76CX9nNPe4TF0j2r66N6SyYMSkuFkslDvw2pdQYb57Bztnu2jiqee607QH2OK2yUDlXMruAwV7g7SpI%2FRSSeYeM0xW7SQ9ipemEBq9GvnAPvtPibzDHulfj2agoEksBUEqMBfSTXoQWRaK7uNNL9vlR0bYAa59j5knDmfDtGPCGvb6EmCvYMBcDTEZL6nrT5qcJhhOJlj76CD%2BWiIabKP41gHZZU9bEhBt%2BXays8Ee4f7OOtPMN9bzeqkB3%2F9UIUSpq1ayckEC5xjMezDq6pQQali4iqyh%2B5wKuW1g7NNLPU0wlkCLDJR%2F9JqK7BtB6MTdMR6NR%2BZFZ0phrFGJVmo9tDB%2FGiIQPcFUJPOFK%2BYAAKtFjA1bdCWvvgUBSJTcZYaD4tEZiVDuB%2FmioIotqN5x7F42nfKjwe1%2BjBEf1ZMdh3RlZdu3YeRYhwtg2TvEAMcYYQDR%2FHQ9YcDUQrnGDkCRQE6b%2B%2BXFW6l2E9xLnVzbBSnzjE6smLXn8Lm54gSDRCdFHkfoJ%2B9vDroll%2FkpDN31a%2Foe1rdfaSzcdEmFsU9PQk5AKSfMZUp74ieLAEnI7HIH%2Bf1pSzIwzP0nFVDW%2Fac2UmGzl6C7Kxh61D94DH25F2azJHtBUYC1fYjVmiVsaMIehbhDg72Z%2Bjb98cWckOf8qz7Z6I8mn57BbliENiXVUPDSSfNcHbeqpwAuuKzk5Guq4rxxY2bty%2FbT8nNcR%2FWdqDuJyeYLIBzr11IxIK5NaD0%2B0WYm4%2B6tm293YU7RSwmU347kzSlflcJcibGXiZ6nLPtNL%2FllbsqbR6bFyTwkxOgAn8lVbDs5RflwrXAd3BwLLZZt2NpY18Gt1HMYqjjFRZ4eQit6KnHcTtZuBYve13TeV4Jj20TKrxFSXZ5mzIuikHJljofvELrrRnoRRkZKev7sad4KWupX0lWpPdprYLdgZ%2Fei2S%2FqLrVy729%2BREW6OGwl%2BGo30dSsWSvBs3ZCPMswdlYW9yq3IR0mcXyF0wcVL6rr44kaSoafNwKPJ9gihTdZOpPeuyzRj9F0QLa%2B%2F7kSxShAyd%2BvspQWnKXut9XqwNla54jIHJZstwLk5KLSfndTPZ6SFwrrjx30sNxaDTMRAGSvsOdwNmJiISX24c89%2FGexJF2a%2FudsF2PzeqcZGjjhG4YImOiFD%2B1UiTPFnOR2bMKcoVrjUw2PQVYVnyOxM8oUN61K5b7pC5yea5DJ6BVtSRh4pQnWAtngmr7PR25mHw7LOYzLJAgFUSZk7FcdnroTuT92TPvdyLG8Y39CW%2FVG8lkzNMqF%2BXVtcAgUJW2pNDmRhpTbLMi4vZt8Qcqt2c9wbfWd3s%2Fw4nuBH0jke0jc%2BG6X0nENXQ0j7hgzTEaStsot3Wgg153gtEcOFRGDZP3ktUGt21oLjL%2BHeM49v7GwvKy84IEtosAFfgrqY9VLfCmEPM5zpIWIIN7OkP%2F6ATdpIEFPvYMYYdt45Q6VHsj9hl%2FjtzyH0ty6bAMk6M%2BxrJaELHO1Yv33ROKuFUTFldJjQ0GdnAqJJWvMkxGC%2FGd8ZT3cryKELEKZo5VtSIaZGCRzRAygKvJh6NnGJckGaj6Y0cpyWXJcx4qy%2FVU0sdWYfK4sYv4Urvkt3TPgCz1t6fR5WntspACMpe1CpF6zog%2FqgqXCYRetxL3jiJRUGalCAsqq2QE95Ui0MJwuvoqjCtJlSFJ86K79%2FxrY8VVKxHASPkcl1VX635gq0crHlKfx5DJ2jBc3XEzyVdN%2BuifGwXF3Nf11EFS0kwLAZmsILVSWE8EqZt2eqDajK1jXR6bxlWQTVigXEqoTAjHi3NgEaxMyVqOeZ58YmTbuM3C%2FfSso%2B4N826H7mmmn0u7GaZnCdqLhXYbK03otCx5XrEUx%2F%2F0%2B6PuZVkNRT%2F1wrFQu3eqlGY9GdMx9US62AsloYVBwE7q7GrZHvK0wjCcVKowpwSKjbI4OCtWzv01LrPJCAt0MbCNd4kMNUmMxrHGlehN9Zz5xE4ZAKwroJmA5i6jRXqdV%2BR%2B5wCD7Khwy8n7mKp%2Bo5DJKxLYBgJU4DdeC9aavqrgOUazBL0HwEKstp0DiJ42H00jPruOYukMevlAuGrW575bRDGMhcqgk%2B%2BqeawQPz3Yx9lQrGZVineVsCXxzcClFuRLE5zmS89%2B7gl6h4510b95%2BW%2B2zO22Ui8WC9%2BaCG%2BFRbKzk64Wun%2BUYPrnen%2BDahtKyZGBrF%2FaZF3XdtRS%2BwqDc%2FjQnbSN8ThQlpWS3UbvIEHmLUalaGOMmeePqicQMnnpiK2yDYynQxwhvo8B2RnOxbHITgrCAonq30nRms5QNw%2BIJPOClGuHUejiWen3pTCqFhbVhfWDN%2FUq0zEpy%2Fmi4OQpOcrS7mUf%2FRK6WykFGnbSFpqWCxG5AihBdlLZgVc3hSLUdCM8lMIlLkT5xnyjWNsNrmpyYYshfV5pk4hmGNs0ria1kwfOBCpQbI8PgJMjTBdAut%2FGYuz2c05fYSZ8thib%2BqxS1LV8t22E%2FSyU21D1qoMZY0LFXJT8mn0Leb7GUt47G5Yt%2FCpSuTzLmCS9Q3ief7EEti%2BL3VMeOdYhx40g9dRDlrvz2XrTfUK7d%2BDUv5uu5toZM3Us1xVMPIN0Oer6xBrpvEUC10aACvzGUDuDx0oydWeZTCZ40DsE5pNS6lofeDPoyUDt%2BtIiUMp9oYWKrsJzZXYFBb3UCfo51H2rH9hkebqDveNj7evcPyo2%2BNUJbXLPbp6NDHyiPWV2CT2XVVbqy3VhWCqZZbcCNQgvGbiAiDXTlEFY6Q2%2F0r4ilum8rHIhcfxTOPZ%2BX1vuvLbhulEYy55%2F3xGaL7VfwiolLgitIWZzoGMMz9baLF9PnOxkmTwVBX2mfZiVYqw2DsvGXp1YFEnx%2FRUlXtz44wNtEzeHc5zVGPK9YoVfjLtLqyVKYdWGS3eFJxRgv%2Bs6sy5w2qd9tPoGTivO%2FZyPtEtGW3RyOZVK7ajJLd82qvWBt%2B%2BlskafO23SWL8V52SGRTv13JWsHP9Tr4aJTNeP2Y%2FT4Jup%2BzSyc1qvwjyQFqxOhpqeS196jAN3NuVMfNzJgVpN6PfV3oF0NgXabbT8vfzxwsnksOVOGuLRlofatmHr302hJ3NJMAOVCWNcqRcZ7t4GXyHVkk19yiqJ2VMzj7pnxsrjlk1tynLck%2FQ93QvqtO4pQOqu5WX730Bcvh8iOLXIi%2Ba4Zqlw1S6A82CVw3cdssq%2BlaSNG7LB%2BVgmd1pQ5aliNlXx6XMu%2Bh0dvvTUoUIQr0hgIwSowFdhrFWAnUS5Llxjea9Q7gopspGtpwaemI2s6ChsigaKtijlvTMMzXJqZt0dOnMcDRs4ZiuFNrIp0y40R61ltnyb%2BVQWP2FXc6rEZnKSeZPePGj0y0qxXl0Ya6KKbJZjXWVOWWhFv6gauCTh0rbhFsVa192w8LoFybL%2Bryyn1Y2l0H6t1pqtlvALc7JOELg2eHxykbKZsoXp5ARZZw%2BJUX71yRHlFi8nKLWGs9znOHb6jbYGG8VNKfLhYK2VoHrzXLPNfvlj5Bfip6tdEGQvgeLSr1K6rXKZJy4ulMtJ8VWuxBKuNjXKxkT1rq5%2B3Kqqg2SC%2FuwBuq0FposxJnIqSyfDSCZv3QTTM%2FcISKN4GcVXs9XlUhZy52jV7CQDSqtA1pXD3fhc1Efmz9D8B17yTb2XrS46OMGRcqUPJpLqpBarDEeEyfsV8eUvnjHDyayLgx4wUkufERlOUHO3KSfRqpfiGiJuUMs6o1xuzdiTx1n3omzEiPvAi%2FwODgYZjoZ9nNn9OGo1bHmPtHLpSn1qxeQhn9xJDpGVBcu6geuPcjNz3MTk3bALacq1sXF9rfy0TEACUQJU4KNY7IAUDBZBXDVwx3ThlZQyEdrBgTUIBHnIQFPuF%2FSAFUQtvhr3G1EOS3%2Bq4yuFlgOUpSk8qaPBxKEs6XIh8iwDOTf%2Bio5yk9Kp0ymkcw9IR63y1Y8jypdyFzDHwlXHXPdOZADyROlBzAuKfvHlhKs31sqnTi5CCy0jw3OzUNga%2BMDnaXtoT8fqtI1eNsN5u1e9ZyDpIG1NjRsN1JF1rVR8uMM%2Fq7hpC1i%2BKS55gBYWtdZ1NSmQrbploWEm%2FnezmiJ7HuxG4LzelRIftzdb67YVVtl3iBL%2FwBAvKSnakj4Wl5ja%2FSEy8XqAgZw%2BdTRFu9tFJv7%2BnQd6lWkvRbtfbCzWiok2INjyVX2GbcBav2eqfkx95BNbd%2FLiu35ZNwWVj0wCzyLPZFxb1F6GBDjsjdB3VuTc02mURb3Sgl64LvnPZd6Dgz1ZpvJv5d9021qYydZkeo52c806l9L8Yo6R2Wju90Zxq7wrt56B7AlpcrSkK3GNa2mz6kA0c4TxGiI2m8TtI%2FTqtnr3AkOE1x5NAUJjhGr7TuGKSaATyEsSuEYCVOBjsK0CbGbvZ%2B4ud1c5l%2BXZUnqz4S84Tzju0uIoUmrQ0yczHCcj9I8yDA4TTPSvbPibjSqsSqooIsf8qJPeJKjPcfbtnI61QhIFqw2yqOCmLT3idQdEFJlNFcF25jK4lYwwayyXuwqOz3wTJS5bzstSm1jgy6lsSL5qIMqTbK5VbbDs1mXjN%2F%2B0rjEjYLFMCTIWe3Gj6aDi3H03Zy17Yf3RzcbZsbX4u1HVtZzZf45W1z%2FJphQtCNDuU%2FLOlttKrsSP5oguZgSy6r7mdRBGkommp7w777E3EZFjZeUIRdMCFY8j%2BQkD4%2F6hT%2FMYDkdIBg%2BW%2Fn5B7jbmWB9t0WqPpw1PMjKTvrE6aWfZuep6lUOO1Mx9q6Vf3h%2FlRzpKGexkM6pMmT4VrXMkbh9uC1%2F7WWyIF0VONn5LXyFzhNZlNk7U5anKq1cCyxvNI5bwiKxQ6dRRqg0ved16si7Xh3grjnkn6E7mvMzyLzElWt0stbtqWb4LTdy9zvbRasLjvU96gmw3becF4wUJbCkBKvBVFSNKsjn1Y5BIL6RHyCzpYZCOtA9gqWOREUqWP%2BWIhWIzmsoi9zOPZ2hdOJQSaTu9LEHveB%2BTfh8jsZ4kYonWv3C4P%2BujPyqsVjLoq%2FN31fnWavcr1EBpj5UoZWusj5JXWDZ59oUcY%2BlpBSUJNzUg951VPsJygEyhkFlUzB3%2FAAAIn0lEQVSF3j6bHFd4GQpLfxjKZtTo05nwReNrhS56y%2Fi6TxKxEJcnAiUXGpk0qeMe5lXiVg7XrjHTRj8iJUcvtqcTTCZQ1vrCGinPGG6i1EdLtrqFlV7OjG73xxH%2FdElvfsiqNGOrf6S4clSk0RY6US68XwIoItRcnU2O0JfTWuRP3sfSuyeb3F23F4korhNQm5JV%2F1BA0nKc%2F3cODpSvb%2F7DTMZVZzxcKMtsgaKsHLnPrd8PeWcO0Zkf6ROUcg3byTByKWn1iUuyMjDC%2FLBqAmXqKNa%2FOsaVeQaEfuJ5tkYZ1islspe1j%2F6s6C%2FzeJELvToTvGt5XyEb7IcYJRuyZptJ5wPZv2LcsnLl3Sr0toztfd%2B%2F34ZLvBFqN23bqOGnW7fhvY19X%2BbmpJ6z%2FMu91flbq7obQ%2Fd9Jf97N4p7rVZdJUBWhqSuzdnyVb%2BV4qblNQlsCQEq8GFF5J1mhaVN1tzVxig90IkPXN4JKqVfNhoeq8FtaDZJVXjHFDmrpWLxGQ1GYNPx6TPiZXJQbKBKlIJil8H18qpdIhXLwlCdOFgopkVmosk5R6HlA6KJYSYuIisojSfiZn4xykmyj0E6wXAsv7zpnyBjrTNVz1e2WOWbIIIkWql0fq0ruK%2B%2FNvepFWVtWY3E49jJ3VAUoj35aYFAOclLpstcqRTl8da8sK4xUXeYUKZY1cfqR6d8lwXjZ9vvY%2Bwkkfbq65HaL1gpnLmjqk4g72uuJDkyZDNxaAXM320v3upfokcKOk1HNrBXudFpN5WxLFwUPrd5EaTfUFo8jrLCrSe%2FbS88X1%2BrpLfQap1DynaUuwT5ypH0Jd76i%2Bz1wKg40rJd82uhNm%2Fbp0r7M5W0d5iqiccsdOtwDCe1bkJ2c2swuy4m4H7%2FLafzyAbhvqxoOj8sZIvofoZ9gDtpUROd%2FTb6Y%2FdXrt3Uza%2B13AT7gxST4Vj9joPXhpusPMrq6VDvN5Afoyj3T0V5nOamAuPumUV8uQqPF1V3gxVbCQtlWyn6eM7iJwtt%2BKqf2j2oDfnh4nHlfpMVpMq4Z5bPlezhUCc%2Bn2Guz7paQRijksBPQ4AKvMvdDDRitYkP8G5kM9CpAWeEk7%2BZYjZ2TglRSr5YBewPAzmnOrhipPNTJ404gZ0U7bFYD8uWvMIi7CpruiwiIe%2Fogh39%2Big%2F53QCdSSfk6e6LM77Llxs7WBv466yucqm2eCnVQYqRIYKWBGthe7zFDM5DvFALLUdHHdO1A8guYpgEd%2B90gqv6AqeQqfKYjdBhJxUxaqjQF1Jcq3rqAj1FdQiXF8Za2QYvPS7VdJlcmevdSJvIhDyFOtvbJ4g7VzO4wv%2Fgk2scltPJLUC7Uf3lUN9LxZm7ogveJaiF5aniWJjMnaVMftu9Apzc148N14e2PgiqKMIQ82kEKiUN9t0iuDIlbSrEcTUXvrhJzf2wT5mlb8ubI7c29eKft9M7t35oLDxjBGubOdarSjlJ7vo5y5WAp13oNVVm5WPhvbXY4%2BDlSzdPlS%2BY%2F1eHcjEIPKDaCr7sJ2ad1FXpcNf2NtfqnXKLZd5HYssMwH03ucgvny1bWbf7U9lEtOVX%2F79C2D2Jv%2Fl2VLy4IQU936r%2BxzpTFYyDiAH7HSOO3qVYHlnlPdBys0xn3jJGVRB%2F5RnqOtlaXOLMNYbP4O9YMI4P0%2Ffl11MoGzmEcOUvdX4U%2FowPUmRrkDtiQom8FZUzIVGjsuUxXSZZqSJ00ZNInk380Np1EleYhzw%2B0wrn58ksE0E7lxcXFxsU4FiZfmrX%2F7SC77zq1953%2FmFBEjgthHQA230%2FO%2B1H9UO3oUysLYoJiQBEiABErj1BO7evbu1z0gL%2FNZWDQtGAj9jAp7Lx6Y4aGu%2FPmvd%2FGhMzM96U9lRDgmQAAmQAAlcEQEq8FcElmJJgATWIJAv4%2Bsl7NB7Zg2JpSS5K0XpDgNIgARIgARI4GYQoAvNzagnlpIESIAESIAESIAESOAaCWyzC80vrpEDsyIBEiABEiABEiABEiABErgkASrwlwTI5CRAAiRAAiRAAiRAAiRwnQSowF8nbeZFAiRAAiRAAiRAAiRAApckQAX%2BkgCZnARIgARIgARIgARIgASukwAV%2BOukzbxIgARIgARIgARIgARI4JIEqMBfEiCTkwAJkAAJkAAJkAAJkMB1EqACf520mRcJkAAJkAAJkAAJkAAJXJIAFfhLAmRyEiABEiABEiABEiABErhOAlTgr5M28yIBEiABEiABEiABEiCBSxKgAn9JgExOAiRAAiRAAiRAAiRAAtdJgAr8ddJmXiRAAiRAAiRAAiRAAiRwSQJU4C8JkMlJgARIgARIgARIgARI4DoJUIG%2FTtrMiwRIgARIgARIgARIgAQuSeDOxcXFxSVlMDkJkAAJkAAJkAAJkAAJkMA1EaAF%2FppAMxsSIAESIAESIAESIAES2AQBKvCboEgZJEACJEACJEACJEACJHBNBKjAXxNoZkMCJEACJEACJEACJEACmyBABX4TFCmDBEiABEiABEiABEiABK6JABX4awLNbEiABEiABEiABEiABEhgEwSowG%2BCImWQAAmQAAmQAAmQAAmQwDURoAJ%2FTaCZDQmQAAmQAAmQAAmQAAlsggAV%2BE1QpAwSIAESIAESIAESIAESuCYCVOCvCTSzIQESIAESIAESIAESIIFNEKACvwmKlEECJEACJEACJEACJEAC10SACvw1gWY2JEACJEACJEACJEACJLAJAlTgN0GRMkiABEiABEiABEiABEjgmghQgb8m0MyGBEiABEiABEiABEiABDZBgAr8JihSBgmQAAmQAAmQAAmQAAlcEwEq8NcEmtmQAAmQAAmQAAmQAAmQwCYIUIHfBEXKIAESIAESIAESIAESIIFrIkAF%2FppAMxsSIAESIAESIAESIAES2AQBKvCboEgZJEACJEACJEACJEACJHBNBP5%2F4XrUEaQepXAAAAAASUVORK5CYII%3D)%0A%0A**MySQL%E5%8D%8A%E8%BF%9E%E6%8E%A5%EF%BC%88semi-join%EF%BC%89%E7%9A%84%E5%AE%9E%E7%8E%B0**%0A%0A*%20**%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E8%A1%A8%E4%B8%8A%E6%8B%89**%20%EF%BC%88Table%20pullout%EF%BC%89%0A%E5%BD%93**%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9F%A5%E8%AF%A2%E5%88%97%E8%A1%A8%E5%A4%84%E5%8F%AA%E6%9C%89%E4%B8%BB%E9%94%AE%E6%88%96%E8%80%85%E5%94%AF%E4%B8%80%E7%B4%A2%E5%BC%95%E5%88%97**%E6%97%B6%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E8%A1%A8**%E4%B8%8A%E6%8B%89**%E5%88%B0%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84**FROM**%E5%AD%90%E5%8F%A5%E4%B8%AD%EF%BC%8C%E5%B9%B6%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E5%90%88%E5%B9%B6%E5%88%B0%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E4%B8%AD%E3%80%82%E6%AF%94%E5%A6%82%EF%BC%9A%0A!%5Bced1622f4c40e2450e7b279efaa13ae2.png%5D(en-resource%3A%2F%2Fdatabase%2F821%3A1)%0A%0A*%20**%E9%87%8D%E5%A4%8D%E5%80%BC%E6%B6%88%E9%99%A4**%20%EF%BC%88DuplicateWeedout%20execution%20strategy%EF%BC%89%0A%E5%AF%B9%E4%BA%8E%E4%B8%8B%E9%9D%A2%E8%BF%99%E4%B8%AA%E6%9F%A5%E8%AF%A2%EF%BC%9A%0A!%5Bda485049065de93178fb4db154deaf33.png%5D(en-resource%3A%2F%2Fdatabase%2F823%3A1)%0A%E8%BD%AC%E6%8D%A2%E4%B8%BA**semi-join**%E6%9F%A5%E8%AF%A2%E5%90%8E%EF%BC%8Cs1%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E5%8F%AF%E8%83%BD%E5%9C%A8s2%E8%A1%A8%E4%B8%AD%E6%9C%89%E5%A4%9A%E6%9D%A1%E5%8C%B9%E9%85%8D%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E6%89%80%E4%BB%A5%E8%AF%A5%E6%9D%A1%E8%AE%B0%E5%BD%95%E5%8F%AF%E8%83%BD%E5%A4%9A%E6%AC%A1%E8%A2%AB%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%9C%80%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%EF%BC%8C%E4%B8%BA%E4%BA%86%E6%B6%88%E9%99%A4%E9%87%8D%E5%A4%8D%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%BB%BA%E7%AB%8B%E4%B8%80%E4%B8%AA**%E4%B8%B4%E6%97%B6%E8%A1%A8**%EF%BC%8C%E6%AF%94%E6%96%B9%E8%AF%B4%E8%BF%99%E4%B8%AA%E4%B8%B4%E6%97%B6%E8%A1%A8%E9%95%BF%E8%BF%99%E6%A0%B7%EF%BC%9A%0A!%5B2dabc7fc895cfd90286a669149bc29a5.png%5D(en-resource%3A%2F%2Fdatabase%2F822%3A1)%0A%E8%BF%99%E6%A0%B7%E5%9C%A8%E6%89%A7%E8%A1%8C%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%BF%87%E7%A8%8B%E4%B8%AD%EF%BC%8C%E6%AF%8F%E5%BD%93%E6%9F%90%E6%9D%A1s1%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%E8%A6%81%E5%8A%A0%E5%85%A5%E7%BB%93%E6%9E%9C%E9%9B%86%E6%97%B6%EF%BC%8C%E5%B0%B1%E9%A6%96%E5%85%88%E6%8A%8A%E8%BF%99%E6%9D%A1%E8%AE%B0%E5%BD%95%E7%9A%84id%E5%80%BC%E5%8A%A0%E5%85%A5%E5%88%B0%E8%BF%99%E4%B8%AA%E4%B8%B4%E6%97%B6%E8%A1%A8%E9%87%8C%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%B7%BB%E5%8A%A0%E6%88%90%E5%8A%9F%EF%BC%8C%E8%AF%B4%E6%98%8E%E4%B9%8B%E5%89%8D%E8%BF%99%E6%9D%A1s1%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%E5%B9%B6%E6%B2%A1%E6%9C%89%E5%8A%A0%E5%85%A5%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%8A%8A%E8%AF%A5%E8%AE%B0%E5%BD%95%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%9B%E5%A6%82%E6%9E%9C%E6%B7%BB%E5%8A%A0%E5%A4%B1%E8%B4%A5%EF%BC%8C%E8%AF%B4%E6%98%8E%E8%BF%99%E6%9D%A1%E4%B9%8B%E5%89%8D%E8%BF%99%E6%9D%A1s1%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%E5%B7%B2%E7%BB%8F%E5%8A%A0%E5%85%A5%E8%BF%87%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%EF%BC%8C%E8%BF%99%E9%87%8C%E7%9B%B4%E6%8E%A5%E6%8A%8A%E5%AE%83%E4%B8%A2%E5%BC%83%E5%B0%B1%E5%A5%BD%E4%BA%86%EF%BC%8C%E8%BF%99%E7%A7%8D%E4%BD%BF%E7%94%A8%E4%B8%B4%E6%97%B6%E8%A1%A8%E6%B6%88%E9%99%A4semi-join%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%80%BC%E7%9A%84%E6%96%B9%E5%BC%8F%E7%A7%B0%E4%B9%8B%E4%B8%BADuplicateWeedout%E3%80%82%0A%0A*%20**%E6%9D%BE%E6%95%A3%E7%B4%A2%E5%BC%95%E6%89%AB%E6%8F%8F**%20%EF%BC%88LooseScan%20execution%20strategy%C2%A0%EF%BC%89%0A!%5B8bc2863dedd4f59977d93178d081ba0d.png%5D(en-resource%3A%2F%2Fdatabase%2F824%3A1)%0A%E5%9C%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%EF%BC%8C%E5%AF%B9%E4%BA%8Es2%E8%A1%A8%E7%9A%84%E8%AE%BF%E9%97%AE%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%88%B0key1%E5%88%97%E7%9A%84%E7%B4%A2%E5%BC%95%EF%BC%8C%E8%80%8C%E6%81%B0%E5%A5%BD%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9F%A5%E8%AF%A2%E5%88%97%E8%A1%A8%E5%A4%84%E5%B0%B1%E6%98%AFkey1%E5%88%97%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%9C%A8%E5%B0%86%E8%AF%A5%E6%9F%A5%E8%AF%A2%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%8A%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E5%90%8E%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%B0%86s2%E4%BD%9C%E4%B8%BA%E9%A9%B1%E5%8A%A8%E8%A1%A8%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%AF%9D%EF%BC%8C%E9%82%A3%E4%B9%88%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E5%B0%B1%E6%98%AF%E8%BF%99%E6%A0%B7%EF%BC%9A!%5Be9ce3362254ccfc51705fc2af754b656.jpeg%5D(en-resource%3A%2F%2Fdatabase%2F825%3A1)%0A%E5%A6%82%E5%9B%BE%E6%89%80%E7%A4%BA%EF%BC%8C%E5%9C%A8s2%E8%A1%A8%E7%9A%84idx_key1%E7%B4%A2%E5%BC%95%E4%B8%AD%EF%BC%8C%E5%80%BC%E4%B8%BA'aa'%E7%9A%84%E4%BA%8C%E7%BA%A7%E7%B4%A2%E5%BC%95%E8%AE%B0%E5%BD%95%E4%B8%80%E5%85%B1%E6%9C%893%E6%9D%A1%EF%BC%8C%E9%82%A3%E4%B9%88%E5%8F%AA%E9%9C%80%E8%A6%81%E5%8F%96%E7%AC%AC%E4%B8%80%E6%9D%A1%E7%9A%84%E5%80%BC%E5%88%B0s1%E8%A1%A8%E4%B8%AD%E6%9F%A5%E6%89%BEs1.key3%20%3D%20'aa'%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%A6%82%E6%9E%9C%E8%83%BD%E5%9C%A8s1%E8%A1%A8%E4%B8%AD%E6%89%BE%E5%88%B0%E5%AF%B9%E5%BA%94%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E9%82%A3%E4%B9%88%E5%B0%B1%E6%8A%8A%E5%AF%B9%E5%BA%94%E7%9A%84%E8%AE%B0%E5%BD%95%E5%8A%A0%E5%85%A5%E5%88%B0%E7%BB%93%E6%9E%9C%E9%9B%86%E3%80%82%E4%BE%9D%E6%AD%A4%E7%B1%BB%E6%8E%A8%EF%BC%8C%E5%85%B6%E4%BB%96%E5%80%BC%E7%9B%B8%E5%90%8C%E7%9A%84%E4%BA%8C%E7%BA%A7%E7%B4%A2%E5%BC%95%E8%AE%B0%E5%BD%95%EF%BC%8C%E4%B9%9F%E5%8F%AA%E9%9C%80%E8%A6%81%E5%8F%96%E7%AC%AC%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E7%9A%84%E5%80%BC%E5%88%B0s1%E8%A1%A8%E4%B8%AD%E6%89%BE%E5%8C%B9%E9%85%8D%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E8%BF%99%E7%A7%8D%E8%99%BD%E7%84%B6%E6%98%AF%E6%89%AB%E6%8F%8F%E7%B4%A2%E5%BC%95%EF%BC%8C%E4%BD%86%E5%8F%AA%E5%8F%96%E5%80%BC%E7%9B%B8%E5%90%8C%E7%9A%84%E8%AE%B0%E5%BD%95%E7%9A%84%E7%AC%AC%E4%B8%80%E6%9D%A1%E5%8E%BB%E5%81%9A%E5%8C%B9%E9%85%8D%E6%93%8D%E4%BD%9C%E7%9A%84%E6%96%B9%E5%BC%8F%E7%A7%B0%E4%B9%8B%E4%B8%BA**%E6%9D%BE%E6%95%A3%E7%B4%A2%E5%BC%95%E6%89%AB%E6%8F%8F**%E3%80%82%0A%0A*%20**Semi-join%20Materialization%20execution%20strategy**%0A%E4%B9%8B%E5%89%8D%E4%BB%8B%E7%BB%8D%E7%9A%84%E5%85%88%E6%8A%8A%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84IN%E5%AD%90%E5%8F%A5%E4%B8%AD%E7%9A%84%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BF%9B%E8%A1%8C%E7%89%A9%E5%8C%96%EF%BC%8C%E7%84%B6%E5%90%8E%E5%86%8D%E8%BF%9B%E8%A1%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%A1%A8%E5%92%8C%E7%89%A9%E5%8C%96%E8%A1%A8%E7%9A%84%E8%BF%9E%E6%8E%A5%E6%9C%AC%E8%B4%A8%E4%B8%8A%E4%B9%9F%E7%AE%97%E6%98%AF%E4%B8%80%E7%A7%8Dsemi-join%EF%BC%8C%E5%8F%AA%E4%B8%8D%E8%BF%87%E7%94%B1%E4%BA%8E%E7%89%A9%E5%8C%96%E8%A1%A8%E4%B8%AD%E6%B2%A1%E6%9C%89%E9%87%8D%E5%A4%8D%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E6%89%80%E4%BB%A5%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E4%B8%BA%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E3%80%82%0A%0A*%20**%E9%A6%96%E6%AC%A1%E5%8C%B9%E9%85%8D**%20%20%EF%BC%88FirstMatch%20execution%20strategy%EF%BC%89%0AFirstMatch%E6%98%AF%E4%B8%80%E7%A7%8D%E6%9C%80%E5%8E%9F%E5%A7%8B%E7%9A%84%E5%8D%8A%E8%BF%9E%E6%8E%A5%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%EF%BC%8C%E8%B7%9F%E5%89%8D%E9%9D%A2%E4%BB%8B%E7%BB%8D%E7%9A%84**%E7%9B%B8%E5%85%B3%E7%9A%84%E6%A0%87%E9%87%8F%E3%80%81%E8%A1%8C%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E6%98%AF%E4%B8%80%E6%A0%B7**%E7%9A%84%EF%BC%8C%E5%B0%B1%E6%98%AF%E8%AF%B4%E5%85%88%E5%8F%96%E4%B8%80%E6%9D%A1%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E7%84%B6%E5%90%8E%E5%88%B0%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%A1%A8%E4%B8%AD%E5%AF%BB%E6%89%BE%E7%AC%A6%E5%90%88%E5%8C%B9%E9%85%8D%E6%9D%A1%E4%BB%B6%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%A6%82%E6%9E%9C%E8%83%BD%E6%89%BE%E5%88%B0%E4%B8%80%E6%9D%A1%EF%BC%8C%E5%88%99%E5%B0%86%E8%AF%A5%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%AE%B0%E5%BD%95%E6%94%BE%E5%85%A5%E6%9C%80%E7%BB%88%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E5%B9%B6%E4%B8%94%E5%81%9C%E6%AD%A2%E6%9F%A5%E6%89%BE%E6%9B%B4%E5%A4%9A%E5%8C%B9%E9%85%8D%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%89%BE%E4%B8%8D%E5%88%B0%E5%88%99%E6%8A%8A%E8%AF%A5%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%AE%B0%E5%BD%95%E4%B8%A2%E5%BC%83%E6%8E%89%EF%BC%9B%E7%84%B6%E5%90%8E%E5%86%8D%E5%BC%80%E5%A7%8B%E5%8F%96%E4%B8%8B%E4%B8%80%E6%9D%A1%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E9%87%8D%E5%A4%8D%E4%B8%8A%E8%BE%B9%E8%BF%99%E4%B8%AA%E8%BF%87%E7%A8%8B%E3%80%82%0A%0A%E6%80%BB%E7%BB%93%EF%BC%8C%E5%8F%AA%E6%9C%89%E7%AC%A6%E5%90%88%E4%B8%8B%E8%BE%B9%E8%BF%99%E4%BA%9B%E6%9D%A1%E4%BB%B6%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%89%8D%E5%8F%AF%E4%BB%A5%E8%A2%AB%E8%BD%AC%E6%8D%A2%E4%B8%BAsemi-join%EF%BC%9A%0A%0A*%20%E8%AF%A5%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E6%98%AF%E5%92%8CIN%E8%AF%AD%E5%8F%A5%E7%BB%84%E6%88%90%E7%9A%84%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%9C%A8%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84WHERE%E6%88%96%E8%80%85ON%E5%AD%90%E5%8F%A5%E4%B8%AD%E5%87%BA%E7%8E%B0%EF%BC%9B%0A*%20%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%9C%89%E5%85%B6%E4%BB%96%E7%9A%84%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%EF%BC%8C%E5%8F%AA%E4%B8%8D%E8%BF%87%E5%92%8CIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E5%BF%85%E9%A1%BB%E7%94%A8**AND%E8%BF%9E%E6%8E%A5**%EF%BC%9B%0A*%20%E8%AF%A5%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%BF%85%E9%A1%BB%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8D%95%E4%B8%80%E7%9A%84%E6%9F%A5%E8%AF%A2%EF%BC%8C%E4%B8%8D%E8%83%BD%E6%98%AF%E7%94%B1%E8%8B%A5%E5%B9%B2%E6%9F%A5%E8%AF%A2%E7%94%B1UNION%E8%BF%9E%E6%8E%A5%E8%B5%B7%E6%9D%A5%E7%9A%84%E5%BD%A2%E5%BC%8F%EF%BC%9B%0A*%20%E8%AF%A5%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%8D%E8%83%BD%E5%8C%85%E5%90%ABGROUP%20BY%E6%88%96%E8%80%85HAVING%E8%AF%AD%E5%8F%A5%E6%88%96%E8%80%85%E8%81%9A%E9%9B%86%E5%87%BD%E6%95%B0%EF%BC%9B%0A%0A%E4%B8%80%E4%BA%9B%E5%85%B8%E5%9E%8B%E7%9A%84%E4%B8%8D%E8%83%BD%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E4%B8%BAsemi-join%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9A%0A%0A*%20%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84WHERE%E6%9D%A1%E4%BB%B6%E4%B8%AD%E6%9C%89%E5%85%B6%E4%BB%96%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E4%B8%8EIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%BB%84%E6%88%90%E7%9A%84%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%BD%BF%E7%94%A8OR%E8%BF%9E%E6%8E%A5%E8%B5%B7%E6%9D%A5%EF%BC%9B%0A*%20%E4%BD%BF%E7%94%A8NOT%20IN%E8%80%8C%E4%B8%8D%E6%98%AFIN%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9B%0A*%20%E5%9C%A8SELECT%E5%AD%90%E5%8F%A5%E4%B8%AD%E7%9A%84IN%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9B%0A*%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E5%8C%85%E5%90%ABGROUP%20BY%E3%80%81HAVING%E6%88%96%E8%80%85%E8%81%9A%E9%9B%86%E5%87%BD%E6%95%B0%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9B%0A*%20%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%AD%E5%8C%85%E5%90%ABUNIOIN%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9B%0A%0A**%E5%AF%B9MySQL%E4%B8%8D%E8%83%BD%E8%BD%AC%E4%B8%BAsemi-join%E6%9F%A5%E8%AF%A2%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2**%0A%0A*%20%E5%AF%B9%E4%BA%8E%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%B0%9D%E8%AF%95%E6%8A%8A%E5%AE%83%E4%BB%AC%E7%89%A9%E5%8C%96%E4%B9%8B%E5%90%8E%E5%86%8D%E5%8F%82%E4%B8%8E%E6%9F%A5%E8%AF%A2%0A!%5B5b5449149f972a16653a7ff268f25b75.png%5D(en-resource%3A%2F%2Fdatabase%2F827%3A0)%0A%E5%85%88%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%89%A9%E5%8C%96%EF%BC%8C%E7%84%B6%E5%90%8E%E5%86%8D%E5%88%A4%E6%96%ADkey1%E6%98%AF%E5%90%A6%E5%9C%A8%E7%89%A9%E5%8C%96%E8%A1%A8%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E4%B8%AD%E5%8F%AF%E4%BB%A5%E5%8A%A0%E5%BF%AB%E6%9F%A5%E8%AF%A2%E6%89%A7%E8%A1%8C%E7%9A%84%E9%80%9F%E5%BA%A6%EF%BC%9B%0A%E8%AF%B7%E6%B3%A8%E6%84%8F%E8%BF%99%E9%87%8C%E5%B0%86%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%89%A9%E5%8C%96%E4%B9%8B%E5%90%8E%E4%B8%8D%E8%83%BD%E8%BD%AC%E4%B8%BA%E5%92%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%A1%A8%E7%9A%84%E8%BF%9E%E6%8E%A5%EF%BC%8C%E5%8F%AA%E8%83%BD%E6%98%AF%E5%85%88%E6%89%AB%E6%8F%8Fs1%E8%A1%A8%EF%BC%8C%E7%84%B6%E5%90%8E%E5%AF%B9s1%E8%A1%A8%E7%9A%84%E6%9F%90%E6%9D%A1%E8%AE%B0%E5%BD%95%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%88%A4%E6%96%AD%E8%AF%A5%E8%AE%B0%E5%BD%95%E7%9A%84key1%E5%80%BC%E5%9C%A8%E4%B8%8D%E5%9C%A8%E7%89%A9%E5%8C%96%E8%A1%A8%E4%B8%AD%E3%80%82%0A%0A*%20%E4%B8%8D%E7%AE%A1%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%98%AF%E7%9B%B8%E5%85%B3%E7%9A%84%E8%BF%98%E6%98%AF%E4%B8%8D%E7%9B%B8%E5%85%B3%E7%9A%84%EF%BC%8C%E9%83%BD%E5%8F%AF%E4%BB%A5%E6%8A%8AIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E5%B0%9D%E8%AF%95%E8%BD%AC%E5%8C%96%E4%B8%BAEXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%9B%0A%E5%85%B6%E5%AE%9E%E5%AF%B9%E4%BA%8E%E4%BB%BB%E6%84%8F%E4%B8%80%E4%B8%AAIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%8C%E9%83%BD%E5%8F%AF%E4%BB%A5%E8%A2%AB%E8%BD%AC%E4%B8%BAEXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E9%80%9A%E7%94%A8%E7%9A%84%E4%BE%8B%E5%AD%90%E5%A6%82%E4%B8%8B%EF%BC%9A%0A!%5B3482670cf09d2a4137284723f6dbf1a7.png%5D(en-resource%3A%2F%2Fdatabase%2F829%3A0)%0A**%E5%A6%82%E6%9E%9C%E4%B8%8D%E8%BD%AC%E6%8D%A2%E7%9A%84%E8%AF%9D%E5%8F%AF%E8%83%BD%E7%94%A8%E4%B8%8D%E5%88%B0%E7%B4%A2%E5%BC%95**%EF%BC%8C%E6%AF%94%E5%A6%82%E8%AF%B4%EF%BC%9A%0A!%5Bb2cb72b7c57b833b3dba63bef94ec915.png%5D(en-resource%3A%2F%2Fdatabase%2F831%3A0)%0A%0A%0A**%E9%9C%80%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C%E5%A6%82%E6%9E%9CIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%B8%8D%E6%BB%A1%E8%B6%B3%E8%BD%AC%E6%8D%A2%E4%B8%BAsemi-join%E7%9A%84%E6%9D%A1%E4%BB%B6%EF%BC%8C%E5%8F%88%E4%B8%8D%E8%83%BD%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%89%A9%E5%8C%96%E8%A1%A8%E6%88%96%E8%80%85%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%89%A9%E5%8C%96%E8%A1%A8%E7%9A%84%E6%88%90%E6%9C%AC%E5%A4%AA%E5%A4%A7%EF%BC%8C%E9%82%A3%E4%B9%88%E5%AE%83%E5%B0%B1%E4%BC%9A%E8%A2%AB%E8%BD%AC%E6%8D%A2%E4%B8%BAEXISTS%E6%9F%A5%E8%AF%A2%E3%80%82**%0A%0A%0A**%E5%9C%A8MySQL5.5%E4%BB%A5%E5%8F%8A%E4%B9%8B%E5%89%8D%E7%9A%84%E7%89%88%E6%9C%AC%E6%B2%A1%E6%9C%89%E5%BC%95%E8%BF%9Bsemi-join%E5%92%8C%E7%89%A9%E5%8C%96%E7%9A%84%E6%96%B9%E5%BC%8F%E4%BC%98%E5%8C%96%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%97%B6%EF%BC%8C%E4%BC%98%E5%8C%96%E5%99%A8%E9%83%BD%E4%BC%9A%E6%8A%8AIN%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E6%8D%A2%E4%B8%BAEXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2**%EF%BC%8C%E5%A5%BD%E5%A4%9A%E5%90%8C%E5%AD%A6%E5%B0%B1%E6%83%8A%E5%91%BC%E6%88%91%E6%98%8E%E6%98%8E%E5%86%99%E7%9A%84%E6%98%AF%E4%B8%80%E4%B8%AA%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%EF%BC%8C%E4%B8%BA%E5%95%A5%E8%A6%81%E6%8C%89%E7%85%A7%E6%89%A7%E8%A1%8C%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%96%B9%E5%BC%8F%E6%9D%A5%E6%89%A7%E8%A1%8C%E5%91%A2%EF%BC%9F%E6%89%80%E4%BB%A5%E5%BD%93%E6%97%B6%E5%A5%BD%E5%A4%9A%E5%A3%B0%E9%9F%B3%E9%83%BD%E6%98%AF%E5%BB%BA%E8%AE%AE%E5%A4%A7%E5%AE%B6%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E8%BD%AC%E4%B8%BA%E8%BF%9E%E6%8E%A5%EF%BC%8C%E4%B8%8D%E8%BF%87%E9%9A%8F%E7%9D%80MySQL%E7%9A%84%E5%8F%91%E5%B1%95%EF%BC%8C%E6%9C%80%E8%BF%91%E7%9A%84%E7%89%88%E6%9C%AC%E4%B8%AD%E5%BC%95%E5%85%A5%E4%BA%86%E9%9D%9E%E5%B8%B8%E5%A4%9A%E7%9A%84%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E7%AD%96%E7%95%A5%EF%BC%8C%E5%A4%A7%E5%AE%B6%E5%8F%AF%E4%BB%A5%E7%A8%8D%E5%BE%AE%E6%94%BE%E5%BF%83%E7%9A%84%E4%BD%BF%E7%94%A8%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BA%86%EF%BC%8C%E5%86%85%E9%83%A8%E7%9A%84%E8%BD%AC%E6%8D%A2%E5%B7%A5%E4%BD%9C%E4%BC%98%E5%8C%96%E5%99%A8%E4%BC%9A%E4%B8%BA%E5%A4%A7%E5%AE%B6%E8%87%AA%E5%8A%A8%E5%AE%9E%E7%8E%B0%E3%80%82%0A!%5B6b4eec6e1b9b17ee489acbca79a7264e.png%5D(en-resource%3A%2F%2Fdatabase%2F833%3A0)%0A%0A%23%23%23%23%203-4-3%20ANY%2FSOME%2FALL%E5%AD%90%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%0A%0A%E5%A6%82%E6%9E%9CANY%2FALL%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%98%AF%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%AF%9D%EF%BC%8C%E5%AE%83%E4%BB%AC%E5%9C%A8%E5%BE%88%E5%A4%9A%E5%9C%BA%E5%90%88%E9%83%BD%E8%83%BD%E8%BD%AC%E6%8D%A2%E6%88%90%E6%88%91%E4%BB%AC%E7%86%9F%E6%82%89%E7%9A%84%E6%96%B9%E5%BC%8F%E5%8E%BB%E6%89%A7%E8%A1%8C%EF%BC%8C%E6%AF%94%E6%96%B9%E8%AF%B4%EF%BC%9A!%5Ba63ef2a105e694b5d30dbc32fa0695f6.png%5D(en-resource%3A%2F%2Fdatabase%2F835%3A0)%0A%0A%0A%23%23%23%23%203-4-3%20%5BNOT%5D%20EXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%89%A7%E8%A1%8C%0A%0A*%20%5BNOT%5D%20EXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%98%AF%E4%B8%8D%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%0A%0A!%5Bacfd9608121456b9de0d6d2f9e06e922.png%5D(en-resource%3A%2F%2Fdatabase%2F837%3A0)%0A%0A*%20%5BNOT%5D%20EXISTS%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%98%AF%E7%9B%B8%E5%85%B3%E5%AD%90%E6%9F%A5%E8%AF%A2%0A!%5Bea894b2100ab4df4e57ee8744fd998fb.png%5D(en-resource%3A%2F%2Fdatabase%2F839%3A0)%0A%0A%23%23%23%23%203-4-4%20%E5%AF%B9%E4%BA%8E%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E4%BC%98%E5%8C%96%0A%0A%E6%88%91%E4%BB%AC%E5%89%8D%E8%BE%B9%E8%AF%B4%E8%BF%87%E6%8A%8A%E5%AD%90%E6%9F%A5%E8%AF%A2%E6%94%BE%E5%9C%A8%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E7%9A%84FROM%E5%AD%90%E5%8F%A5%E5%90%8E%EF%BC%8C%E9%82%A3%E4%B9%88%E8%BF%99%E4%B8%AA%E5%AD%90%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E7%9B%B8%E5%BD%93%E4%BA%8E%E4%B8%80%E4%B8%AA%E6%B4%BE%E7%94%9F%E8%A1%A8%EF%BC%8C%E6%AF%94%E5%A6%82%E4%B8%8B%E8%BE%B9%E8%BF%99%E4%B8%AA%E6%9F%A5%E8%AF%A2%EF%BC%9A!%5B9fe62be63caa4573e6166733619d3290.png%5D(en-resource%3A%2F%2Fdatabase%2F841%3A0)%0A%0A%E5%AD%90%E6%9F%A5%E8%AF%A2(%20SELECT%20id%20AS%20d_id%2C%20key3%20AS%20d_key3%20FROM%20s2%20WHERE%20key1%20%3D%20'a')%E7%9A%84%E7%BB%93%E6%9E%9C%E5%B0%B1%E7%9B%B8%E5%BD%93%E4%BA%8E%E4%B8%80%E4%B8%AA%E6%B4%BE%E7%94%9F%E8%A1%A8%EF%BC%8C%E8%BF%99%E4%B8%AA%E8%A1%A8%E7%9A%84%E5%90%8D%E7%A7%B0%E6%98%AFderived_s1%EF%BC%8C%E8%AF%A5%E8%A1%A8%E6%9C%89%E4%B8%A4%E4%B8%AA%E5%88%97%EF%BC%8C%E5%88%86%E5%88%AB%E6%98%AFd_id%E5%92%8Cd_key3%E3%80%82%0A%E5%AF%B9%E4%BA%8E%E5%90%AB%E6%9C%89%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E6%9F%A5%E8%AF%A2%EF%BC%8CMySQL%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%A4%E7%A7%8D%E6%89%A7%E8%A1%8C%E7%AD%96%E7%95%A5%EF%BC%9A%0A%0A*%20**%E6%9C%80%E5%AE%B9%E6%98%93%E6%83%B3%E5%88%B0%E7%9A%84%E5%B0%B1%E6%98%AF%E6%8A%8A%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%89%A9%E5%8C%96**%0A%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E5%86%99%E5%88%B0%E4%B8%80%E4%B8%AA%E5%86%85%E9%83%A8%E7%9A%84%E4%B8%B4%E6%97%B6%E8%A1%A8%E4%B8%AD%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%B1%E6%8A%8A%E8%BF%99%E4%B8%AA%E7%89%A9%E5%8C%96%E8%A1%A8%E5%BD%93%E4%BD%9C%E6%99%AE%E9%80%9A%E8%A1%A8%E4%B8%80%E6%A0%B7%E5%8F%82%E4%B8%8E%E6%9F%A5%E8%AF%A2%E3%80%82%E5%BD%93%E7%84%B6%EF%BC%8C%E5%9C%A8%E5%AF%B9%E6%B4%BE%E7%94%9F%E8%A1%A8%E8%BF%9B%E8%A1%8C%E7%89%A9%E5%8C%96%E6%97%B6%EF%BC%8C%E8%AE%BE%E8%AE%A1MySQL%E7%9A%84%E5%A4%A7%E5%8F%94%E4%BD%BF%E7%94%A8%E4%BA%86%E4%B8%80%E7%A7%8D%E7%A7%B0%E4%B8%BA%E5%BB%B6%E8%BF%9F%E7%89%A9%E5%8C%96%E7%9A%84%E7%AD%96%E7%95%A5%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E5%9C%A8%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9C%9F%E6%AD%A3%E4%BD%BF%E7%94%A8%E5%88%B0%E6%B4%BE%E7%94%9F%E8%A1%A8%E6%97%B6%E6%89%8D%E5%9B%9E%E5%8E%BB%E5%B0%9D%E8%AF%95%E7%89%A9%E5%8C%96%E6%B4%BE%E7%94%9F%E8%A1%A8%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E8%BF%98%E6%B2%A1%E5%BC%80%E5%A7%8B%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2%E5%91%A2%E5%B0%B1%E6%8A%8A%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%89%A9%E5%8C%96%E6%8E%89%E3%80%82%E6%AF%94%E6%96%B9%E8%AF%B4%E5%AF%B9%E4%BA%8E%E4%B8%8B%E8%BE%B9%E8%BF%99%E4%B8%AA%E5%90%AB%E6%9C%89%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E6%9F%A5%E8%AF%A2%E6%9D%A5%E8%AF%B4%EF%BC%9A%0A!%5Bbcc19cbc72b8050e46bb6747d6d194ca.png%5D(en-resource%3A%2F%2Fdatabase%2F843%3A0)%0A%E5%A6%82%E6%9E%9C%E9%87%87%E7%94%A8%E7%89%A9%E5%8C%96%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E6%96%B9%E5%BC%8F%E6%9D%A5%E6%89%A7%E8%A1%8C%E8%BF%99%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%9A%84%E8%AF%9D%EF%BC%8C%E9%82%A3%E4%B9%88%E6%89%A7%E8%A1%8C%E6%97%B6%E9%A6%96%E5%85%88%E4%BC%9A%E5%88%B0s2%E8%A1%A8%E4%B8%AD%E6%89%BE%E5%87%BA%E6%BB%A1%E8%B6%B3s2.key2%20%3D%201%E7%9A%84%E8%AE%B0%E5%BD%95%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%8E%8B%E6%A0%B9%E5%84%BF%E6%89%BE%E4%B8%8D%E5%88%B0%EF%BC%8C%E8%AF%B4%E6%98%8E%E5%8F%82%E4%B8%8E%E8%BF%9E%E6%8E%A5%E7%9A%84s2%E8%A1%A8%E8%AE%B0%E5%BD%95%E5%B0%B1%E6%98%AF%E7%A9%BA%E7%9A%84%EF%BC%8C%E6%89%80%E4%BB%A5%E6%95%B4%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%9A%84%E7%BB%93%E6%9E%9C%E9%9B%86%E5%B0%B1%E6%98%AF%E7%A9%BA%E7%9A%84%EF%BC%8C%E6%89%80%E4%BB%A5%E4%B9%9F%E5%B0%B1%E6%B2%A1%E6%9C%89%E5%BF%85%E8%A6%81%E5%8E%BB%E7%89%A9%E5%8C%96%E6%9F%A5%E8%AF%A2%E4%B8%AD%E7%9A%84%E6%B4%BE%E7%94%9F%E8%A1%A8%E4%BA%86%E3%80%82%0A%0A*%20%E5%B0%86%E6%B4%BE%E7%94%9F%E8%A1%A8%E5%92%8C%E5%A4%96%E5%B1%82%E7%9A%84%E8%A1%A8%E5%90%88%E5%B9%B6%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%98%AF%E5%B0%86%E6%9F%A5%E8%AF%A2%E9%87%8D%E5%86%99%E4%B8%BA%E6%B2%A1%E6%9C%89%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E5%BD%A2%E5%BC%8F%0A!%5B1ca6598d65fe116896351421c9b8aff4.png%5D(en-resource%3A%2F%2Fdatabase%2F845%3A0)%0A%E8%BF%99%E6%A0%B7%E9%80%9A%E8%BF%87%E5%B0%86%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%92%8C%E6%B4%BE%E7%94%9F%E8%A1%A8%E5%90%88%E5%B9%B6%E7%9A%84%E6%96%B9%E5%BC%8F%E6%88%90%E5%8A%9F%E7%9A%84%E6%B6%88%E9%99%A4%E4%BA%86%E6%B4%BE%E7%94%9F%E8%A1%A8%EF%BC%8C%E4%B9%9F%E5%B0%B1%E6%84%8F%E5%91%B3%E7%9D%80%E6%88%91%E4%BB%AC%E6%B2%A1%E5%BF%85%E8%A6%81%E5%86%8D%E4%BB%98%E5%87%BA%E5%88%9B%E5%BB%BA%E5%92%8C%E8%AE%BF%E9%97%AE%E4%B8%B4%E6%97%B6%E8%A1%A8%E7%9A%84%E6%88%90%E6%9C%AC%E4%BA%86%E3%80%82%E5%8F%AF%E6%98%AF%E5%B9%B6%E4%B8%8D%E6%98%AF%E6%89%80%E6%9C%89%E5%B8%A6%E6%9C%89%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E6%9F%A5%E8%AF%A2%E9%83%BD%E8%83%BD%E8%A2%AB%E6%88%90%E5%8A%9F%E7%9A%84%E5%92%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%90%88%E5%B9%B6%EF%BC%8C%E5%BD%93%E6%B4%BE%E7%94%9F%E8%A1%A8%E4%B8%AD%E6%9C%89%E8%BF%99%E4%BA%9B%E8%AF%AD%E5%8F%A5%E5%B0%B1%E4%B8%8D%E5%8F%AF%E4%BB%A5%E5%92%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%90%88%E5%B9%B6%EF%BC%9A%0A!%5B6dd0e8fa814fcc4a42ede607c48a9665.png%5D(en-resource%3A%2F%2Fdatabase%2F847%3A0)%0A%0A%E6%89%80%E4%BB%A5MySQL%E5%9C%A8%E6%89%A7%E8%A1%8C%E5%B8%A6%E6%9C%89%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E4%BC%98%E5%85%88%E5%B0%9D%E8%AF%95%E6%8A%8A%E6%B4%BE%E7%94%9F%E8%A1%A8%E5%92%8C%E5%A4%96%E5%B1%82%E6%9F%A5%E8%AF%A2%E5%90%88%E5%B9%B6%E6%8E%89%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%B8%8D%E8%A1%8C%E7%9A%84%E8%AF%9D%EF%BC%8C%E5%86%8D%E6%8A%8A%E6%B4%BE%E7%94%9F%E8%A1%A8%E7%89%A9%E5%8C%96%E6%8E%89%E6%89%A7%E8%A1%8C%E6%9F%A5%E8%AF%A2%E3%80%82</center></span>
</div></body></html> 